剃须刀actionLink中的asp.net mvc可选参数

时间:2018-07-26 11:53:33

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

我有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(最后一个参数),但是我是新手,并且在Google上搜索了很多,但没有得到任何有价值的东西,请帮助我。

如果该解决方案适用于n个可选参数而不是仅一个Id,那就更好了,但是现在这也是可以接受的。

1 个答案:

答案 0 :(得分:0)

如果解决方案适用于n个可选参数而不是仅一个ID,那就更好了

为了更好地使用MVC控制器端的所有传递的querystring参数,请使用

Request.QueryString

Request.QueryString是NameValueCollection,您将在actionlink中的querystring参数中传递值。

我尝试过如下图

<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();
}

您可以获得在控制器中传递的所有参数。 enter image description here