【发布时间】:2015-12-16 13:50:59
【问题描述】:
我有这个控制器:
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
return View();
}
public ActionResult Edit(int accessLevel)
{
return View();
}
}
在RouteConfig.cs中设置为:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Test Edit",
url: "Test/Edit/{accessLevel}",
defaults: new { controller = "Test", action = "Edit", accessLevel = UrlParameter.Optional }
);
如果我去这个网址:
http://localhost:35689/Test/Edit/2
我收到此错误:
参数字典包含参数的空条目 方法的不可为空类型“System.Int32”的“accessLevel” 'System.Web.Mvc.ActionResult Edit(Int32)' 在 'MyProject.Mvc.Client.Controllers.TestController'。一个可选的 参数必须是引用类型、可为空的类型或声明为 一个可选参数。参数名称:参数
知道这是为什么吗?我认为我使用/2 提供了正确的数据类型。
【问题讨论】:
-
只需使用 AttributeRouting 并抛弃破烂的路由表垃圾。
-
我实际试过了,结果还是一样,能不能提供样张?
-
能否请您在 RouteConfig 顺序中交换您的 Route 并尝试一下
-
你试过了吗??
-
请在 RouteConfig 中交换您的路线,因为路线的顺序非常重要。
标签: c# asp.net-mvc