簡體   English   中英

MVC控制器不接收參數值

[英]MVC Controller Not Receiving Parameter Values

無論我如何格式化URL,都會得到一個空參數異常。 我已經嘗試過我現在能想到的所有方法。 它正在工作,然后就停止了。 因此,我還原了我的上一次更改,以查看是否可以解決該問題,但是沒有解決。 現在,即使在以前的(有效的)副本中,它也不起作用。 我也遇到了編譯器錯誤,因此我清理了解決方案,重新構建,重新啟動了我的計算機(和VS),仍然一無所獲。

這與路由映射無關。 當我嘗試搜索問題時,便能找到這些。 為了確保,我確實玩了很多。

我收到以下錯誤消息:

參數字典包含“ MyProject.Controllers.RecruitingController”中方法“ System.Web.Mvc.ActionResult ViewJobs(System.Guid)”的非空類型“ System.Guid”的參數“ id”的空條目。 可選參數必須是引用類型,可為空的類型,或者必須聲明為可選參數。 參數名稱:參數

我的方法如下所示(非常典型):

public class RecruitingController : Controller
{
    public ActionResult ViewJobs(Guid id)
    {
        var ListView = RecruitingLogic.GetListView(id);
        return View("ViewJobs", ListView);
    }
}

注意 :我嘗試將其更改為可為空的guid,但這沒有用。 老實說,我沒想到會這樣。 我也嘗試將動作移至另一個控制器。 那也沒有用。

注2 :我確實觀察到這是空的。 這不是無效的錯誤消息。 我也有動作/參數記錄設置作為動作過濾器,因此我可以回頭查找並找到停止工作的確切時間。 您可能會看到該操作接收到非null值,然后bam,該操作剛剛停止。

路由映射:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

在網址方面,我嘗試了很多。 但是,這些是為我工作的少數...直到他們停下來。

https:// localhost:12345 / recruiting / viewjobs / B77A156-622C-E811-80D4-005056865C51 https:// localhost:12345 / recruiting / viewjobs?id = B77A156-622C-E811-80D4-005056865C51 https:// localhost: 12345 /招聘/ viewjobs /?id = B77A156-622C-E811-80D4-005056865C51

我現在很茫然。 任何建議表示贊賞。

由於路由配置具有小寫id ,您是否可以更新操作簽名以使用小寫id參數並嘗試。

public ActionResult ViewJobs(Guid id)

您可能已經將可選的URL參數(UrlParameter.Optional)與action方法本身的可選參數混淆了。 路由表正在嘗試查找允許使用可選id參數的操作,但Guid默認情況下不可為空。 嘗試

public class RecruitingController : Controller
{
    public ActionResult ViewJobs(Guid? id)
    {
        var ListView = RecruitingLogic.GetListView(id);
        return View("ViewJobs", ListView);
    }
}

要么

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index"}
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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