Asp.net mvc 3 IEnumerable中字段的MVC3远程验证

Asp.net mvc 3 IEnumerable中字段的MVC3远程验证,asp.net-mvc-3,ienumerable,remote-validation,Asp.net Mvc 3,Ienumerable,Remote Validation,我的模型类的IEnumerable中有一个对象,呈现的HTML如下 <input data-val="true" data-val-number="The field money must be a number." data-val-remote="&amp;#39;money&amp;#39; is invalid." data-val-remote-additionalfields="*.money" data-val-remote-url="/RemoteValid

我的模型类的
IEnumerable
中有一个对象,呈现的HTML如下

<input data-val="true" data-val-number="The field money must be a number." data-val-remote="&amp;#39;money&amp;#39; is invalid." data-val-remote-additionalfields="*.money" data-val-remote-url="/RemoteValidator/ValidateMoney" data-val-required="The money field is required." id="BudgetDetails_0__BudgetData_Money" name="BudgetDetails[0].BudgetData.Money" type="text" value="100" />
<span class="field-validation-valid" data-valmsg-for="BudgetDetails[0].BudgetData.Money" data-valmsg-replace="true"></span>
UI将触发Ajax调用,但不幸的是路由表无法将请求与我的操作方法相匹配

    public ActionResult ValidateMoney(decimal money)
    {
        return Json("I will always fail you.", JsonRequestBehavior.AllowGet);
    }
因为参数名称不匹配。由于是在IEnumerable中,所以参数名甚至是动态的
BudgetDetails[0]。BudgetData.Money
BudgetDetails[1]。BudgetData.Money
等等

当然,我总是可以调整动作方式

    public ActionResult ValidateMoney()
    {
        string parameter = Request.QueryString.ToString();
        return Json("I will always fail you.", JsonRequestBehavior.AllowGet);
    }
并使用非常原始的方法来解析查询字符串,但我认为这不是最优雅的解决方案

有人有经验可以分享吗?

试试这种方法

public JsonResult ValidateMoney([Bind(Include = "Money")]BudgetValues budgetValues)
{
 if(null != budgetValues)
 {
  decimal money = budgetValues.Money 
 }
 return Json("I will always fail you.", JsonRequestBehavior.AllowGet); 
}

不起作用,因为传入请求包含
BudgetDetails%5b0%5d.BudgetData.Money=100
,并且它永远无法绑定到
Money
参数,因此该值始终为空。ValidateMoney模型如何?就这个简单的BudgetValue类?你在视图中做了什么?不,我试过了,但没有成功,我想绑定没有正确处理索引器。
    public ActionResult ValidateMoney(decimal money)
    {
        return Json("I will always fail you.", JsonRequestBehavior.AllowGet);
    }
    public ActionResult ValidateMoney()
    {
        string parameter = Request.QueryString.ToString();
        return Json("I will always fail you.", JsonRequestBehavior.AllowGet);
    }
public JsonResult ValidateMoney([Bind(Include = "Money")]BudgetValues budgetValues)
{
 if(null != budgetValues)
 {
  decimal money = budgetValues.Money 
 }
 return Json("I will always fail you.", JsonRequestBehavior.AllowGet); 
}