【问题标题】:Multiple params in ActionLink not rendering as needed in MVC projectActionLink 中的多个参数未在 MVC 项目中按需要呈现
【发布时间】:2014-01-07 02:00:08
【问题描述】:

我有一个包含多个部分视图的视图。这是一个设置页面。他们可以单击左侧面板上的站点,广告它将在页面的局部视图中显示用于管理该站点的所有设置。当我建立网站的链接时,我以下面的 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?siteId=1

而不是 ~/SettingsController/SelectSite/?id=1&siteId=1344

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

【问题讨论】:

  • 谢谢。抱歉,我一夜没睡,筋疲力尽。

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


【解决方案1】:

这是因为你的路由表。默认情况下,它看起来像 {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
    }

【讨论】:

  • 我明白了。谢谢。到目前为止,我很喜欢 MVC,但习惯不同。我几天前才开始。无论如何,再次感谢。
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2017-04-25
相关资源
最近更新 更多