很可能是一个非常基本的问题,但仍然是:在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
答案 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 );
}