C# 远程验证不需要';t将数据传递给操作

C# 远程验证不需要';t将数据传递给操作,c#,asp.net-mvc,validation,remote-validation,C#,Asp.net Mvc,Validation,Remote Validation,我有一个模型: public class MyModel ...fields [Remote(ActionName, ControllerName)] public string SomeNumber { get; set; } ..fields 并在ControllerName controller中执行操作: public JsonResult ActionName(string someNumber) {...} public class ValidationController :

我有一个模型:

public class MyModel
...fields
[Remote(ActionName, ControllerName)]
public string SomeNumber { get; set; }
..fields
并在ControllerName controller中执行操作:

public JsonResult ActionName(string someNumber)
{...}
public class ValidationController : Controller
{ 
     public JsonResult UniqueUsername(ParentViewModel Registration) 
     {
        var Username = Registration.User.Username; //access the child view model property like so

        //Validate and return JsonResult

     }
}
但是当调用actions时,参数someNumber始终为null。 当我试着调试它时,我得到了

GET /ControllerName/ActionName?MyModel.SomeNumber =34189736 
我怎样才能让它工作? (我无法传递整个模型MyModel,也无法更改MyModel.SomeNumber我视图中字段的名称)

UPD.在我的视图中输入:

<input data-val="true" data-val-remote-additionalfields="*.SomeNumber" data-val-remote-url="/ControllerName/ActionName" id="MyModel_SomeNumber" name="MyModel.SomeNumber" type="text" value="34189734" class="valid">

我认为您可能需要在输入参数上匹配大小写。

尝试使用您的模型作为参数。 这样它就可以将值绑定到它

public JsonResult ActionName(MyModel model)
{
    //...
    model.SomeNumber;
    //...

   return Json(validationResult, JsonRequestBehavior.AllowGet)
}

如果使用嵌套的
ViewModels
,则需要在
验证
操作中接受父级
ViewModel
作为参数。例如:

public class ParentViewModel
{
    public UserViewModel User {get; set; }

    //....
}

public class UserViewModel 
{
    [Remote("UniqueUsername", "Validation")]
    public string Username { get; set; }

    //....
}
在ValidationController中:

public JsonResult ActionName(string someNumber)
{...}
public class ValidationController : Controller
{ 
     public JsonResult UniqueUsername(ParentViewModel Registration) 
     {
        var Username = Registration.User.Username; //access the child view model property like so

        //Validate and return JsonResult

     }
}

它不再调用我的操作。是否添加了JSONRequestBehavior标志?check更新的回答说他无法通过整个模型MyModel解决这个问题的简单方法是启动Fiddler并检查GET请求查询字符串中发送的参数。您的验证操作应该与这些参数匹配。您不必创建另一个视图模型。