如何从视图中引用"Context"/控制器



我们正在寻找建立一个mvc4网站的url,如

  • 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的属性,在下面的链接中定义

或更好的方式从配置数据库获取菜单?

{SiteName}是使用问题-中的答案实现的将{sitename}参数传递给MVC控制器动作

严格来说,视图不应该关心是什么服务于它。您的参数是基本模型属性的主要候选者。

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

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

然后改变你的布局使用模型ModelBase

然后在你想要的地方填充任何你想要的

相关内容

最新更新