如何从视图中引用“上下文”/控制器

时间:2013-05-07 20:45:16

标签: c# .net asp.net-mvc asp.net-mvc-4 visual-studio-2012

我们正在寻找使用url等构建mvc4网站,例如

  • abc.com/site1/home/about
  • abc.com/site2/home/about

其中每个都指的是一个完全不同的网站/页面

现在菜单项 - home / about / contact / ...等也与用户定义的文本和链接不同

并且〜/ Views / Shared / _Layout.cshtml中的以下代码将从

更改
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>

会改为

            <ul id="menu">
                @foreach( var nav_config in dbHelper.getConfig(HttpContext.Current)) 
                       <li>@Html.ActionLink(nav_config.Text, "MyAction", "MyController")</li>
            </ul>

想知道是否有更简单的方法从视图中引用{SiteName},这是baseController的属性,如下面链接中所定义

或从配置db获取菜单的更好方法?

使用有问题的答案实施{SiteName} - Passing a {sitename} parameter to MVC controller actions

1 个答案:

答案 0 :(得分:0)

严格来说,观点不应该关心它的作用。您的参数是基本模型属性的主要候选者。

让所有模型实现以下基类:

public abstract class ModelBase
{
    public string SiteName { get; set; }
}

然后更改布局以使用模型ModelBase

然后用任何你想要的和任何你想要的东西填充它。