解决方案
路线
routes.MapRoute(
"Whatever", // Route name
"{controller}/{action}/{id}", //{ID} MUST BE USED IN YOUR CONTROLLER AS THE PARAMETER
new { controller = "MyController", action = "MyActionName", id = UrlParameter.Optional } // Parameter defaults
);
就是这样!我猜你必须在公共 actionresult 中使用 id 的名称(int id //must be ID HERE like global.asax)
重现我的问题的步骤: 1.新建一个mvc3应用 2. 进入主控制器并放入 Index(int?x){ return view()} 3. 运行应用程序 4.进入url中的url类型 http://localthost:someport/Home/Index/1 5.在控制器中插入断点查看x的值 6. 请注意,即使您将 url 放在 x 上方,也不会像假设的那样等于 1!
我只是不明白为什么我在 id 中得到一个空值....
public ActionResult MyActionName(int? id)
{
//the id is null!!!!!!!!!!!! event thought i just entered the url below!
}
我在浏览器中输入以下网址 http://locahost/MyController/MyActionName/1
//我也把它放在我的 global.asax 中,但它并没有真正帮助。
routes.MapRoute(
"Whatever", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "MyController", action = "MyActionName", id = UrlParameter.Optional } // Parameter defaults
);
和!如果我把我的错误
public ActionResult MyActionName(int id)
{
//the id is null!!!!!!!!!!!! event thought i just entered the url below!
}
请注意,上面的例子是为了简单起见,这个错误是针对实际应用的。
“/”应用程序中的服务器错误。
参数字典包含“MedicalVariance.Controllers.MedicineManagementController”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可为空类型“System.Int32”的参数“MvrId”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:parameters 描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:参数字典包含“MedicalVariance.Controllers”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可为空类型“System.Int32”的参数“MvrId”的空条目。医学管理控制器”。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数