我收到以下错误,我的默认路由参数为null . 我在Controller Action上使用了相同的代码,它在URL中没有任何参数,并且工作正常 . 我知道我的自定义路由被调用但我不明白为什么startIndex和pageSize在操作中显示为null .
错误:
参数字典包含'AEO.WorkOrder中方法'System.Web.Mvc.ActionResult ViewVcByStatus(System.String,Int32,Int32)'的非可空类型'System.Int32'的参数'startIndex'的空条目 . WebUI.Controllers.VendorComplianceController” . 可选参数必须是引用类型,可空类型,或者声明为可选参数 . 参数名称:参数
控制器:
public ActionResult ViewVcByStatus(string status, int startIndex, int pageSize) { ... }
路线:
routes.MapRoute("ViewVcByStatus", "ViewVcByStatus/{status}",
new
{
controller = "VendorCompliance",
action = "ViewVcByStatus",
startIndex = 0,
pageSize = WebConfigurationManager.AppSettings["PageSize"],
});
链接:
<a href="VendorCompliance/ViewVcByStatus?status=PROCESSED">
还试过这个产生相同错误的链接:
<a href="VendorCompliance/ViewVcByStatus/PROCESSED">
2 回答
发送带有链接的startIndex和pageSize(我硬编码,改为使用参数),你的actionresult期望链接需要提供的所有参数,并且MapRoute可能会通过默认路由,因为它无法与任何匹配匹配您提供的一个参数的其他路线
试试这个 .
Route.config
可选参数应在routeconfig中声明为可选,并将它们标记为int?在你的行动方法中,这将为你工作 . 希望这会有所帮助 . 此解决方案将在您的问题“http://localhost:53290/VendorCompliance/ViewVcByStatus?status=PROCESSED”中使用您的网址模式 .