一次为Controller控制所有PartialViews

时间:2014-03-26 19:35:28

标签: javascript asp.net-mvc-4 backbone.js razor

我正在使用.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>

0 个答案:

没有答案