Asp.net mvc 如何将BindAttribute.Prefix应用于Int32类型的操作方法参数?
当我将Asp.net mvc 如何将BindAttribute.Prefix应用于Int32类型的操作方法参数?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,当我将BindAttribute.Prefix应用于动作参数value时,我希望DefaultModelBinder使用自定义前缀或返回到空前缀(在任何情况下value参数都将被分配编号100)。但它两者都不做,因此以下代码引发异常: 参数字典包含方法“System.Web.Mvc.ActionResult Index(Int32)”的非null类型“System.Int32”的参数“value”的null条目 Index.cshtml: using (Html.BeginForm()) {
BindAttribute.Prefix
应用于动作参数value
时,我希望DefaultModelBinder
使用自定义前缀或返回到空前缀(在任何情况下value
参数都将被分配编号100
)。但它两者都不做,因此以下代码引发异常:
参数字典包含方法“System.Web.Mvc.ActionResult Index(Int32)”的非null类型“System.Int32”的参数“value”的null条目
Index.cshtml:
using (Html.BeginForm())
{
<input id="originalPrefix.value" name="originalPrefix.value" type="text" value="100" />
<input id="value" name="value" type="text" value="100" />
<input type="submit" value="submit" />
}
使用(Html.BeginForm())
{
}
a) 为什么DefaultModelBinder
不能将表单数据绑定到value
参数
b) 如果可能,我们如何将BindAttribute.Prefix
应用于Int32类型的操作方法参数
谢谢属性的名称
值应该是“originalPrefix”
而不是“originalPrefix.value”
。您试图绑定的是参数,而不是参数的value属性。现在它可以工作了,但是在这种情况下,前缀实际上不是用作前缀,而是用作表单数据元素的名称,是否存在将BindAttribute.prefix应用于简单类型参数(如int)会很有用的情况?据我所知,应用于简单参数是其预期用途之一。语法看起来很奇怪。相关:
using (Html.BeginForm())
{
<input id="originalPrefix.value" name="originalPrefix.value" type="text" value="100" />
<input id="value" name="value" type="text" value="100" />
<input type="submit" value="submit" />
}