我使用ViewBag将一个值从控制器传递给View并将其存储在变量中。然后从同一视图我将值发送回存储在变量中的Controller。早些时候它曾经工作,但最近它开始给我低于错误。
参数字典包含非可空类型'System.Int32'参数'nServiceId'的空条目'非可空类型'System.Int32'用于方法 'System.Web.Mvc.ActionResult SaveRequest(Int32,BussinessObjects.class1, System.Web.Mvc.FormCollection)”。可选参数必须是a 引用类型,可空类型,或声明为可选 参数。
我的代码如下:
控制器:
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
}))
答案 0 :(得分:3)
您没有将nServiceId
的值传递给控制器。您正在使用Html.BeginForm()
(new { name = "EnterData", id = "EnterData", nServiceId = nServiceId }
,其中最后一个参数nServiceId = "nServiceId"
)将@using (Html.BeginForm("SaveRequest", "MyController", new { nServiceId = nServiceId }, FormMethod.Post, new { name = "EnterData", id = "EnterData" }))
添加为html属性,而不是路由值(检查它生成的html)。
您需要使用this overload,其用途为
new { nServiceId = ViewBag.ServiceId }
或ProcessBuilder pb = new ProcessBuilder("sftp","-oIdentityFile=privateKey","-b","commands.txt","username@hostname");