[英]MVC Route Parameters Are Null
我收到以下錯誤,我的默認路由參數為空。 我在Controller Action上使用了相同的代碼,但在URL中沒有任何參數,並且效果很好。 我知道正在調用我的自定義路由,但我不明白為什么startIndex和pageSize在操作中顯示為null。
錯誤:
參數字典在'AEO.WorkOrder.WebUI'中包含方法'System.Web.Mvc.ActionResult ViewVcByStatus(System.String,Int32,Int32)'的非空類型'System.Int32'的參數'startIndex'的空條目。 .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">
嘗試這個。
public ActionResult ViewVcByStatus(string status, int? pageSize, int?startIndex)
{
return View();
}
Route.config
routes.MapRoute(
name: "ViewVcByStatus",
url: "ViewVcByStatus/{status}",
defaults: new { controller = "VendorCompliance", action = "ViewVcByStatus", startIndex = UrlParameter.Optional, pageSize = UrlParameter.Optional });
可選參數應在routeconfig中聲明為可選,並將其標記為int? 在您的操作方法中,這將為您完成工作。 希望對您有所幫助。此解決方案將與您在問題“ http:// localhost:53290 / VendorCompliance / ViewVcByStatus?status = PROCESSED ”中使用的網址格式一起使用。
發送帶有鏈接的startIndex和pageSize(我將其硬編碼,改用參數),您的actionresult期望該鏈接需要提供的所有參數,並且MapRoute可能會陷入默認Route,因為它無法與任何路徑匹配與您提供的一個參數匹配的其他路線
<a href="VendorCompliance/ViewVcByStatus?status=PROCESSED&startIndex=0&pageSize=0">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.