C# 为什么可以';是否将表单数据直接绑定到动作方法参数?

C# 为什么可以';是否将表单数据直接绑定到动作方法参数?,c#,asp.net-mvc,C#,Asp.net Mvc,我有这样的行动方法: public ActionResult Index(HttpPostedFileBase image, int variable) variable 1:<input type="text" name="variable" value="1234" /> 然后形成这样的元素: public ActionResult Index(HttpPostedFileBase image, int variable) variable 1:<input type

我有这样的行动方法:

public ActionResult Index(HttpPostedFileBase image, int variable)
variable 1:<input type="text" name="variable" value="1234" />
然后形成这样的元素:

public ActionResult Index(HttpPostedFileBase image, int variable)
variable 1:<input type="text" name="variable" value="1234" />
变量1:
开始调试时,出现以下异常:

参数字典包含“Stream.Controllers.HomeController”中方法“System.Web.Mvc.ActionResult Index(System.Web.HttpPostedFileBase,Int32)”的非null类型“System.Int32”的参数“variable”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数

这有什么问题吗?

试试这个:

public ActionResult Index(HttpPostedFileBase image, int? variable)
问号(?)表示变量是可为空的变量,然后可以为其分配空值

要了解有关可空类型的更多信息,请在MSDN上阅读以下内容:

尝试:

<input type="text" id="variable" name="variable" value="1234" />


给我一个身份证,看看你有没有同样的问题。。。另外,我知道你可能知道这一点,但为了验证,你确实把它放在了正在发布的表单中,对吗?

确保你的
位于
标记中,并且表单就是正在执行其操作的表单。

+1,但你应该告诉这个可怜的人什么是可为null的int,这样他就不会坐在那里,乱写他的头,想知道问号是什么意思。。。在遇到他们之前,我是一名.Net开发人员多年。大卫,你写评论时,我就是这么做的。:)问题是,您得到的错误只是通知它为null:parameters dictionary包含不可为null的类型“System.Int32”的参数“variable”的null条目。我知道什么是可为null的类型吗?可怜的人。你是舒尔吗?你有足够的知识来回答这个问题吗?好的,我解决了。问题是当我第一次请求页面时。服务器正在调用索引操作。但因为并没有任何表单发布到服务器,所以我得到了这个错误。解决方法是:添加新的无参数索引操作仅返回视图。并将[Httppost]属性添加到现有属性。