我最早能以编程方式获取将在asp.net MVC应用程序中使用的母版页名称吗?
想法是根据母版页更改使用的viewdata。我希望能够尽早设置内容,以便各个开发人员不需要知道填充它。理想情况下,它只会在后台发生。
在简化场景中,我们会为不同类型的页面设置不同的主页,例如带有标题,leftnav,rightnav和footer的默认页面,或者可能缺少rightnav的安全页面。
由于
答案 0 :(得分:2)
我想说,在您的视图由视图引擎解析后,您的母版页就知道了。您可以在Controller上调用View方法时设置主页:
public ActionResult Index()
{
return View("index","masterpagename");
}
我想如果您想对您的母版页做任何事情,那就是这样。我不知道你的问题的上下文,但我假设你想根据使用哪个母版页来操纵视图和/或视图数据?也许解决问题的方法不是首先以编程方式获取母版页的名称?
添加,编辑后: 你可以做的是创建一个新的'Base'控制器,它继承了默认的Controller类。然后重写View方法,并告诉开发人员使用它:
public class MySuperController : Controller
{
protected override ViewResult View(string viewName, string masterName, object model)
{
// do something here so your masterpage is different depending on the context //
string newMasterName = "something-something";
return base.View(viewName, newMasterName, model);
}
}
我认为'所有其他视图方法都要通过此方法进行路由,或者在您的情况下不使用(需要您传递IView的方法)。