gpt4 book ai didi

c# - 可选参数必须是引用类型、可空类型或声明为可选

转载 作者:行者123 更新时间:2023-11-30 21:57:08 27 4
gpt4 key购买 nike

我使用 ViewBag 将一个值从 Controller 传递到 View 并将其存储在一个变量中。然后从同一个 View 中,我将值发送回存储在变量中的 Controller 。早些时候它曾经工作但最近它开始给我以下错误。

The parameters dictionary contains a null entry for parameter 'nServiceId' of non-nullable type 'System.Int32' non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult SaveRequest(Int32, BussinessObjects.class1, System.Web.Mvc.FormCollection)'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.

我的代码如下:

Controller :

public ActionResult EnterData(int nServiceId)
{
ViewBag.ServiceId = nServiceId;
return View();
}

[HttpPost]
public ActionResult SaveRequest(int nServiceId, GetQuoteInfo viewModel, FormCollection fCollection)
{

}

查看:

@{int nServiceId = ViewBag.ServiceId;}
@using (Html.BeginForm("SaveRequest",
"MyController",
FormMethod.Post,
new
{
name = "EnterData",
id = "EnterData",
nServiceId = nServiceId
}))

最佳答案

您没有将 nServiceId 的值传递给 Controller ​​。您正在使用 this overload Html.BeginForm() 其中最后一个参数 (new { name = "EnterData", id = "EnterData", nServiceId = nServiceId }) 添加 nServiceId = "nServiceId" 作为 html 属性,而不是路由值(检查它生成的 html)。

您需要使用 this overload用法在哪里

@using (Html.BeginForm("SaveRequest", "MyController", new { nServiceId = nServiceId }, FormMethod.Post, new { name = "EnterData", id = "EnterData" }))

new { nServiceId = ViewBag.ServiceId }

关于c# - 可选参数必须是引用类型、可空类型或声明为可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898422/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com