在ASP.NET MVC中,可以使用以下属性来分配本地布局页面:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
对于本地,我的意思是它需要驻留在同一个ASP.NET MVC项目中。
在我们的项目中,我们需要能够在不同的解决方案中共享一个布局页面,这些解决方案由不同团队在不同时间部署。因此,我们需要能够在运行时从中心位置分配布局页面。 我们不希望任何人必须获得最新的布局页面并将其放入他们的项目中+部署。
无法为布局属性分配远程URL(这似乎是合乎逻辑的)。 有人试过这样的事吗?
我正在考虑制作另一种布局扩展方法,该方法执行以下操作(例如this.SetRemoteLayout(“[url]”):
有没有人这样做过?
答案 0 :(得分:0)
我们将遵循下一个模式:
==>如果布局需要更改中央DLL,则调整并部署html帮助程序代码。然后,所有应用程序都将自动使用更新的布局,而无需重新部署其应用程序。
这是我们在html助手中定义部分的方法:
public static IHtmlString RenderSectionCustom(this HtmlHelper html)
{
WebViewPage page = html.ViewDataContainer as WebViewPage;
var section = page.RenderSection("CustomTop", false);
return section == null ? MvcHtmlString.Empty : MvcHtmlString.Create(section.ToHtmlString());
}
public static IHtmlString DefineSectionCustom(this HtmlHelper html)
{
WebViewPage page = html.ViewDataContainer as WebViewPage;
page.DefineSection("CustomTop", () =>
{
page.Write(MvcHtmlString.Create(" hello world (custom top section from HTML HELPER)!"));
});
return MvcHtmlString.Empty;
}