MVC 6 路由未按预期执行



我有这条路线:

routes.MapRoute(name: "Trads",
url: "test_3000/{action}/{traditional}",
defaults: new { controller = "Test_3000", action = "Subset", traditional = UrlParameter.Optional });

以及使用此方法的Test_3000Controller:

// GET: Test_3000/Subset?traditional=(Chinese Character)
public ActionResult Subset(string traditional)
{
if (traditional == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Test_3000 test_3000 = db.Test_3000.Find(traditional);
if (test_3000 == null)
{
return HttpNotFound();
}
return View(test_3000);
}

此网址有效:

server/test_3000/subset?traditional=的

此网址不起作用:

server/test_3000/subset/的

在后一种情况下,"传统"为空。

"传统"是 SQL 表中的一列。

你试过这个吗

Routes.MapRoute(name: "Trads",
url: "test_3000/{action}/{traditional?}",
defaults: new { controller = "Test_3000", action = "Subset", traditional = UrlParameter.Optional });

请注意繁体上的

public ActionResult Subset(string traditional  = null)
{ ... }

因此,将繁体显式设置为可选

routes.MapRoute(
name: "ChBoPinCritCji",
url: "charbopopincrits/subset/{Char}",
defaults: new { controller = "CharBopoPinCrits", action = "Subset", Char = typeof(string) }
);

这个MapRoute,这是第一个,现在可以工作了。

感谢您的关注。

最新更新