Umbraco V7xx 插入 HTML5 视频到网页
Umbraco V7xx Inserting HTML5 Video to webpage
所以我在 umbraco 中创建了一个文档类型,并为我的视频部分提供了相应的模板,我希望它是内容可管理的,并且不想从 youtube 或类似的网站嵌入。我已经在 webconfig 中更改了 umbraco 的上传限制,并使用媒体选择器在媒体部分上传了 vid。我现在遇到的问题是如何从该媒体中获取它并将其显示在我的主页上。我的部分视图中有这段代码,它是针对该部分的,但它没有在页面上显示任何内容,也没有在控制台上显示任何错误:
编辑:我尝试了一种新方法,它给了我这个错误:
你调用的对象是空的。
(只要我删除“.Url”,该页面就会工作,但不会加载媒体中视频的路径!:(
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<!--===================================Setion 2 SO Wifi & Customer Reviews=========================================-->
<section>
<div class="row">
<div class="col-sm-6 wifi">
<h2 class="so-wifi">
@Umbraco.Field("sowifiTitle", convertLineBreaks: true)
</h2>
<img src="/src/img/so wifi.png" class="img-fluid wifi-img" alt="so wifi">
</div>
<div class="col-sm-6">
<div class="video embed-responsive embed-responsive-16by9">
@{
var videoId = Model.Content.GetPropertyValue<int>("sowifiVideo");
var videoUrl = Umbraco.Media(videoId).Url;
<video autoplay controls width="850" height="450">
<source src="@videoUrl" type="video/mp4" />
</video>
}
</div>
</div>
</div>
</section>
您尝试自己解决什么问题?你能检查一下正在生成什么 HTML 代码吗?你试过调试你的方式吗?您是否获得了正确的 mediaFolderId?您实际上是在为您的内容选择一个媒体文件夹吗?然后您在 .Children() 集合中得到什么类型的对象?
您没有在循环中使用 "video" 变量,而是请求当前页面的 属性。如果你幸运的话,你也许可以做类似
的事情
src="@video.Url"
而不是整个 Model.Content 的东西,但是从你的问题来看它是否真的有效还很不清楚:-/
编辑:你应该能够做这样的事情来获得一个单一的媒体URL:
var videoId = Model.Content.GetPropertyValue<int>("sowifiVideo");
var videoUrl = Umbraco.Media(videoId).Url;
然后
<source src="@videoUrl" type="video/mp4" />
当您处理图像并使用 GetCropUrl(...) 时,有趣的是,该函数会为您获取 URL。对于任何其他类型的媒体文件,您必须自己制作。
终于解决了,转到 post 此处工作的代码,以防将来其他人遇到类似问题。(感谢 Jannik 再次帮助我,让我朝着正确的方向前进)
@{
var videoId = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("sowifiVideo");
foreach (var item in videoId)
{
<video controls width="850" height="450">
<source src="@item.Url" type="video/mp4" />
</video>
}
}
所以我在 umbraco 中创建了一个文档类型,并为我的视频部分提供了相应的模板,我希望它是内容可管理的,并且不想从 youtube 或类似的网站嵌入。我已经在 webconfig 中更改了 umbraco 的上传限制,并使用媒体选择器在媒体部分上传了 vid。我现在遇到的问题是如何从该媒体中获取它并将其显示在我的主页上。我的部分视图中有这段代码,它是针对该部分的,但它没有在页面上显示任何内容,也没有在控制台上显示任何错误:
编辑:我尝试了一种新方法,它给了我这个错误: 你调用的对象是空的。 (只要我删除“.Url”,该页面就会工作,但不会加载媒体中视频的路径!:(
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<!--===================================Setion 2 SO Wifi & Customer Reviews=========================================-->
<section>
<div class="row">
<div class="col-sm-6 wifi">
<h2 class="so-wifi">
@Umbraco.Field("sowifiTitle", convertLineBreaks: true)
</h2>
<img src="/src/img/so wifi.png" class="img-fluid wifi-img" alt="so wifi">
</div>
<div class="col-sm-6">
<div class="video embed-responsive embed-responsive-16by9">
@{
var videoId = Model.Content.GetPropertyValue<int>("sowifiVideo");
var videoUrl = Umbraco.Media(videoId).Url;
<video autoplay controls width="850" height="450">
<source src="@videoUrl" type="video/mp4" />
</video>
}
</div>
</div>
</div>
</section>
您尝试自己解决什么问题?你能检查一下正在生成什么 HTML 代码吗?你试过调试你的方式吗?您是否获得了正确的 mediaFolderId?您实际上是在为您的内容选择一个媒体文件夹吗?然后您在 .Children() 集合中得到什么类型的对象?
您没有在循环中使用 "video" 变量,而是请求当前页面的 属性。如果你幸运的话,你也许可以做类似
的事情src="@video.Url"
而不是整个 Model.Content 的东西,但是从你的问题来看它是否真的有效还很不清楚:-/
编辑:你应该能够做这样的事情来获得一个单一的媒体URL:
var videoId = Model.Content.GetPropertyValue<int>("sowifiVideo");
var videoUrl = Umbraco.Media(videoId).Url;
然后
<source src="@videoUrl" type="video/mp4" />
当您处理图像并使用 GetCropUrl(...) 时,有趣的是,该函数会为您获取 URL。对于任何其他类型的媒体文件,您必须自己制作。
终于解决了,转到 post 此处工作的代码,以防将来其他人遇到类似问题。(感谢 Jannik 再次帮助我,让我朝着正确的方向前进)
@{
var videoId = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("sowifiVideo");
foreach (var item in videoId)
{
<video controls width="850" height="450">
<source src="@item.Url" type="video/mp4" />
</video>
}
}