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