8

我正在尝试使用 autoplay='autoplay' 的 MVC razor 向页面输出一个值,以便自动播放 HTML5 视频。我的方法 GetAutoPlayVideo 读取 web.config 文件以确定站点是否会自动播放视频。

public static string GetAutoPlayVideo()
{
     bool autoPlayVideo = Converter.ToBoolean(System.Web.Configuration.WebConfigurationManager.AppSettings["AutoPlayVideo"]);
     if (autoPlayVideo)
     return "autoplay='autoplay'";
     else
         return string.Empty;
}

然后在页面上使用以下标记:

    <div id="videoHolder">
                <video id="video" width="503" height="284" @Html.Raw(MyUtility.GetAutoPlayVideo()) controls >
                @foreach (string s in Model.SelectedShow.VideoFiles)
                {
                    <source src="@(CdnResources.GetImageUrl(s))" type="@(Utility.GetMimeType(s))" />
                }
                Your browser does not support the video tag.
            </video>
        </div>

到目前为止我创建的语法是这样的:

@Html.Raw(MyUtility.GetAutoPlayVideo())

是否可以将其缩短为类似的东西?

@MyUtility.GetAutoPlayVideo()
4

1 回答 1

13

是的。

Razor 逃逸系统不会逃逸任何类型的东西IHtmlString。该Html.Raw()方法只返回一个HtmlString包含您的文本的实例。

您可以简单地将您的方法声明为返回IHtmlString,然后调用Html.Raw()(或new HtmlString()在内部。

于 2012-12-19T16:49:49.877 回答