2017-06-17 42 views
0

我試圖找出一個很好的模式,以實現以下目標:ASP.NET MVC流中的文本爲src標籤

<video width="640" height="480" controls> 
    <source src="@Model.MeetingVideo" type="video/mp4"> 
    <track kind="subtitles" label="English subtitles" src="@Model.Subtitles" srclang="en" default/> 
</video> 

我希望能夠到src文本存放在我的視圖模型(@Model.Subtitles)並顯示它。

這只是文字內容。通常,這些字幕文件是靜態文本文件。

出於某種原因,採取上述方法是行不通的。

我沒有看到字幕出現。

我想我做錯了什麼......我想我需要某種流技術來將文本流式傳輸到src屬性。

任何想法或建議嗎?

感謝,

菲利普

回答

2

所以src需要一個URI。如何將數據編碼爲data URI

public static string GetDataUri(string text, string contentType) 
{ 
    var bytes = Encoding.UTF8.GetBytes(text); 
    var b64String = Convert.ToBase64String(bytes); 

    //the old way 
    //var dataUri = string.Format("data:{0};base64,{1}", contentType, b64String); 

    //C#6.0 and above 
    var dataUri = $"data:{contentType};base64,{b64String}"; 

    return dataUri; 
} 

然後生成URI

//maybe subs have a different content type? I don't know 
var subtitleSrc = GetDataUri(theText, "text/plain"); 

,並讓它進入你的模型,並直接使用該值作爲srctrack元素。

如果是我,我會在您的視圖中使用src = "@Html.Raw(theDataUri)",以便剃刀在呈現之前不會嘗試插入字符串。