我正在使用.NET MVC4并创建了许多都用作模板的PartialView。我使用Backbone.js和Backbone.Marionette.js作为我的客户端代码,并创建了我的Backbone Views中使用的模板作为RAZOR PartialViews。
我创建了一个名为TemplatesController的Controller,它有一个ChildAction,给定一个PartialView的名称,它返回该PartialView的MvcHtmlString,这是我的模板。然后我可以使用模板和Handlebars在Backbone.Marionette中创建我的视图。
这对我来说很有用,但我必须为每个存在的PartialView调用Controller操作。我的模板列表正在增长,我希望不必每次都向我的索引视图添加一个新的调用渲染模板。
我的问题是,有没有更好的方法只需调用一次Controller并返回所有存在的PartialViews?谢谢你的任何建议。
这是我的Controller方法
[ChildActionOnly]
public ActionResult GetTemplate(string name) {
return PartialView(name);
}
这是我用来调用Controller Action的HtmlHelper方法
public static MvcHtmlString Template(this HtmlHelper htmlHelper, string name) {
// call ChildAction on our controller to get the HTML for this template
return htmlHelper.Action("GetTemplate", "Templates", new { name = name });
}
以下是使用Helper将模板加载到Index或_Layout视图的示例。对于我创建的每个PartialView,我添加一行,但我想删除这些并在一行中执行,如Html.AllTemplates或其他。
@Html.Template("SiteHeader")
@Html.Template("SiteFooter")
我删除了所有内容,但这将是每个部分视图中的内容示例,需要注意的主要内容是它包含在脚本标记内
<script id="site-header" type="text/x-handlebars-template">
<h3>{{headertext}}</h3>
<div>{{somevalue}}</div>
</script>