我有这条路线:
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,这是第一个,现在可以工作了。
感谢您的关注。