【问题标题】:Add a query string to a HtmlHelper in ASP.NET MVC向 ASP.NET MVC 中的 HtmlHelper 添加查询字符串
【发布时间】:2011-05-10 22:58:51
【问题描述】:

我对生成链接的两个 HtmlHelper 有一个看法,就像这样

<li><%:Html.ActionLink("Link A", "Index", "HomeController")%></li>
<li><%:Html.ActionLink("Link B", "Index", "HomeController"})%></li>

现在我希望向链接 B 添加一个查询字符串,以便当它指向以下 URL http://localhost:55556/HomeController/?Sort=LinkB

我希望两个链接都指向同一个控制器,这样我就可以检测是否存在 queryString,然后将适当的链接指向不同的视图,例如...

[AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Index()
        {
            var linkChoice = Request.QueryString["Sort"];

            if (linkChoice == "LinkB")
            {
                return View("ViewB");
            }
            else
            {
               return View("ViewA");
            }
        }

感谢您的帮助。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    你有没有不能使用的原因:

    <li><%:Html.ActionLink("Link A", "Index", "HomeController", new { Sort = "LinkA" }, null)%></li>
    <li><%:Html.ActionLink("Link B", "Index", "HomeController", new { Sort = "LinkB" }, null)%></li>
    

    【讨论】:

    • 您好,这似乎可行,使用上面给出的答案,Tejs 提供了来自 HtmlHelper 的以下 URL:localhost:55556/?Length=18 为什么我不知道?
    • 另一个示例使用了错误的重载,因此第三个参数(即控制器名称)被用作路由值的对象。对象是一个字符串。字符串具有 Length 属性。您使用的控制器名称的长度必须是 18 个字符宽。
    【解决方案2】:

    您只需在字典中提供查询字符串参数。以下关于 SO 的问题可能会让您感兴趣:QueryString parameters.

    在你的情况下,它只是

    <%= Html.ActionLink("Name", "Index", "Controller", new { Sort = "LinkB" }) %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多