在asp.net MVC中获取主页名称

时间:2009-02-17 11:25:09

标签: .net asp.net asp.net-mvc

我最早能以编程方式获取将在asp.net MVC应用程序中使用的母版页名称吗?

想法是根据母版页更改使用的viewdata。我希望能够尽早设置内容,以便各个开发人员不需要知道填充它。理想情况下,它只会在后台发生。

在简化场景中,我们会为不同类型的页面设置不同的主页,例如带有标题,leftnav,rightnav和footer的默认页面,或者可能缺少rightnav的安全页面。

由于

1 个答案:

答案 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的方法)。