ActionLink中的多个参数不能在MVC项目中根据需要进行渲染

时间:2014-01-07 02:00:09

标签: c# asp.net-mvc asp.net-mvc-4 razor

我有一个视图,它有多个部分视图。这是一个设置页面。他们可以点击左侧面板上的网站,广告会在页面的部分视图中显示管理该网站的所有设置。当我构建网站的链接时,我使用以下Razor代码作为示例:

        List<Site> siteList = Site.GetSites(new SiteQuery());
        foreach (Site site in siteList)
        {
            <li>@Html.ActionLink(@site.Name, "SelectSite", "SettingsController", new { id = Model.EnvironmentID, siteId = @site.SiteID}, null)</li>
        }

这是我试图在SetitngsController控制器中击中的ActionResult:

        public ActionResult SelectSite(int id, int siteId)
        {    
            //..code here
        }

发生错误,因为我输出的URL如下:

〜/ SettingsController / SelectSite / 1?网站ID = 1

而不是〜/ SettingsController / SelectSite /?id = 1&amp; siteId = 1344

我是否明白误解了如何使用新网址更新页面上的当前视图并以这种方式添加params。这在MVC理论中是错误的,还是我只是错过了什么?提前谢谢!

1 个答案:

答案 0 :(得分:3)

这是因为您的路由表。默认情况下它看起来像{Controller}\{Action}\{id},所以你的id参数在行动之后就是正确的。

您可以更改参数名称或更改路由(但最后一个解决方案的复杂性更高),例如:

@Html.ActionLink(site.Name, 
                 "SelectSite", 
                 "SettingsController", 
                 new { environmentID = Model.EnvironmentID, siteId = site.SiteID}, null)

public ActionResult SelectSite(int environmentID, int siteId)
    {    
        //..code here
    }