MVC 6路由未按预期执行

时间:2017-07-28 02:59:08

标签: asp.net-mvc actionresult maproute

我有这条路线:

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

此网址有效:

  

服务器/ test_3000 /子集?传统=的

此网址不起作用:

  

服务器/ test_3000 /子集和/的

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

“Traditional”是SQL表中的一列。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

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)
{ ... }

因此传统显式设置为可选

答案 1 :(得分:0)

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

这首MapRoute现在可以使用了。

感谢您的关注。