【问题标题】:Why can't I bind form data directly to action method parameter?为什么我不能直接将表单数据绑定到操作方法参数?
【发布时间】:2010-08-06 15:47:40
【问题描述】:

我有这样的操作方法:

public ActionResult Index(HttpPostedFileBase image, int variable)

和这样的表单元素:

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

当我开始调试时,出现以下异常:

参数字典包含一个 null 条目,用于在“Stream.控制器.HomeController'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数

这有什么问题?

【问题讨论】:

  • 好的,我解决了。问题是当我第一次请求页面时。服务器正在调用索引操作。但是由于没有任何表单发布到服务器,我收到了这个错误。解决方法是:添加新的无参数索引动作只返回视图。并将 [Httppost] 属性添加到现有的。

标签: c# asp.net-mvc


【解决方案1】:

试试这个:

public ActionResult Index(HttpPostedFileBase image, int? variable)

问号(?)表示变量是可以为空的变量,然后可以赋值为空值。

要了解有关可空类型的更多信息,请阅读 MSDN:Nullable Types (C# Programming Guide)

【讨论】:

  • +1,但是你应该告诉这个可怜的人什么是可以为空的 int,这样他就不会坐在那里,抓着头,想知道问号是干什么用的......我是一个 .Net在我遇到他们之前已经开发了多年。
  • 大卫,当你写你的评论时,我正在这样做。 :)
  • 问题是您得到的错误只是通知它为空:参数字典包含不可为空类型“System.Int32”的参数“变量”的空条目。跨度>
  • 我知道什么是可空类型?可怜的人。
  • 你是舒尔吗,你有足够的知识来回答这个问题吗?
【解决方案2】:

试试:

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

提供一个 ID,看看你是否遇到同样的问题......另外,我知道你可能知道这一点,但为了验证,你确实把它放在了发布的表单中,对吗?

【讨论】:

    【解决方案3】:

    确保您的&lt;input&gt; 位于&lt;form&gt; 标记中,并且该表单是正在执行其操作的表单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2017-06-25
      相关资源
      最近更新 更多