我需要將所有腳本放在頁面底部,問題在於當我有局部視圖時我無法使用「RenderSection」方法。發現如何添加的HtmlHelper擴展,它需要一個腳本文件的名稱,一個很好的例子,加載到堆棧,然後又幫助將呈現出對基地佈局: Razor section inclusions from partial viewMVC 4 - 如何將模板傳遞給html幫助器方法
這是偉大的 - 但我不想要爲一小段腳本創建一個完整的JS文件,或者甚至是我想要放入的HTML文件。而且我不想將它全部作爲字符串傳遞,我想要很好的格式化和智能感知,所以我想用一個模板,即:
@{Html.AddScript("test", @<text>
<script type="text/javascript">
function RefreshPreview() {
$('#AutoReplyHtml_Preview').html(
$('#htmlTemplate').html()
.replace('@@[email protected]@', $('#AutoReplySubject').val())
.replace('@@[email protected]@', $('#AutoReplyPreHeader').val())
.replace('@@[email protected]@', $('#AutoReplyHtml').val())
);
$('#AutoReplyPlainText_Preview').html(
$('#plainTextTemplate').html()
.replace('@@[email protected]@', $('#AutoReplyPlainText').val())
);
}
$(document).ready(function() {
RefreshPreview();
});
</script>
</text>);}
問題是 - 怎麼我得到模板的值到我的方法,我有這樣的代碼符合,但不知道如何獲取數據出來的「code」參數:
public static string AddScript(this HtmlHelper htmlHelper, string title, Func<object, object> code) {
var ctx = htmlHelper.ViewContext.HttpContext;
Dictionary<string, string> scripts = ctx.Items["HtmlHelper.AddScript"] as Dictionary<string, string>;
if (scripts == null) {
scripts = new Dictionary<string, string>();
ctx.Items.Add("HtmlHelper.AddScript", scripts);
}
scripts.Add(title, code.ToString()); //Doens't work!
return string.Empty;
}
如何調整委託參數以獲取模板內的值?
完美!這正是我所需要的 - 當涉及到Func時,仍然是一個新手 - 只需要調整一下,就必須使其成爲IHtmlString:public static IHtmlString AddBottomContent(this HtmlHelper htmlHelper,string title,Func
嗯,有趣。我在我的代碼中使用'HelperResult'(實現'IHtmlString'),但我很高興你提到它;也許'IHtmlString'更一般,我應該在我的代碼中使用。 –