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" />
 }