簡體   English   中英

MVC路由參數為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM