如何在Asp.Net MVC中启用命名和未命名的url参数

时间:2015-06-29 06:44:01

标签: asp.net asp.net-mvc

很可能是一个非常基本的问题,但仍然是:在ASP.Net MVC应用程序中,如何启用控制器来响应具有命名或未命名URL参数的URL。

使用以下控制器:

[Route("test/display/{scaleid}")]
public ActionResult Display(int scaleid)
{
    return View();
}

我尝试了两个URL请求 - 第一个工作,第二个(我指定参数名称),不起作用。这是为什么?

http://localhost:43524/Test/Display/11
http://localhost:43524/Test/Display/?scaleid=11

3 个答案:

答案 0 :(得分:2)

中的最后一个斜杠
localhost:43524/Test/Display/?scaleid=11

将破坏该网址的路由。这应解决:

localhost:43524/Test/Display?scaleid=11 

答案 1 :(得分:1)

因为您告诉ASP,URL映射是“test / display / scaleid”。 所以在你的第二次测试中,“scaleid”没有定义。

我目前无法测试,但请尝试此映射: “测试/显示/ {scaleid} {scaleid}

答案 2 :(得分:1)

1)使参数可选:

[Route("test/display/{scaleid:int?}")]
public ActionResult Display(int scaleid? = Nothing)
{
    return View();
}

2)如果缺少url参数,请尝试从查询字符串中获取:

   string scaleid_par = this.Request.QueryString["scaleid"];
   if (!scaleid.HasValue && !string.IsNullOrEmpty(scaleid_par) ) {
        int.TryParse( scaleid_par, scaleid );
   }