【问题标题】:asp.net mvc optional params in razor actionLinkrazor actionLink 中的 asp.net mvc 可选参数
【发布时间】:2018-07-26 11:53:33
【问题描述】:

我有 2 个语言切换链接

<a class="dropdown-item"               
    href="@Url.Action(ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "en" }, null)" 
    style="color:#333;">English</a>

<a class="dropdown-item"                                      
    href="@Url.Action(ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "ar" }, null)" 
    style="color:#333;">Arabic</a>

它工作正常,只有 url 中的控制器和操作 但是当有像 id 这样的可选参数用于详细信息和编辑操作时,它不会按预期工作。

我想我必须用一些东西来改变 null(最后一个参数),但我是新人,用谷歌搜索了很多,但没有得到任何有价值的东西,请帮助我。

如果解决方案适用于 n 个可选参数而不是仅一个 Id 会更好,但目前这也是可以接受的。

【问题讨论】:

  • 最后一个参数 (null) 用于添加 html 属性。您需要向第四个参数添加其他参数 - 例如new { language = "en", id = someValue }
  • 谢谢@stephen 你能帮我解决一下id = 什么吗?如果products/edit/12products/detail/12
  • 我做到了,new { language = "en", id = ViewContext.RouterData.Values["id"] } 在所有情况下都是最佳且无错误
  • 为什么不使用 Html.Action 或 Html.RenderAction?

标签: asp.net-mvc razor optional-parameters


【解决方案1】:

如果解决方案适用于 n 个可选参数而不是仅一个 Id 会更好

为了更好地使用MVC控制器端的所有传递的查询字符串参数

Request.QueryString

Request.QueryString 是 NameValueCollection,您在 actionlink 中的查询字符串参数中获得了传递的值。

我尝试过如下所示

<a class="dropdown-item" href="@Url.Action(ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(),  new { language = "ar",id="100",studentid = 1,studentName = "abc" }, null)" style="color:#333;">Arabic</a>

你的 mvc 控制器如下所示

public ActionResult About(int id)
{
      var querystring = Request.QueryString;
       // in querystring you get all value like below screenshot
       var studentName = querystring["studentName"]; // access parameter like 
      ViewBag.Message = "Your application description page.";

      return View();
}

您可以获取您在控制器中传递的所有参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2010-12-14
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多