4

我有模型:

public class MyModel
...fields
[Remote(ActionName, ControllerName)]
public string SomeNumber { get; set; }
..fields

并在 ControllerName 控制器中有一个动作:

public JsonResult ActionName(string someNumber)
{...}

但是当调用操作时,参数 someNumber 始终为空。当我尝试调试它时,我得到

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

UPD解决了!:) 我使用单个字段 SomeNumber 创建新模型并使用前缀:

SomeNumber([Bind(Prefix = "MyModel")]MySingleFieldModel model)
4

3 回答 3

6

如果您使用的是 nested ,则需要在您的操作ViewModels中接受父级ViewModel作为参数。Validation例如:

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

    //....
}

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

    //....
}

在验证控制器中:

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

     }
}
于 2013-12-11T17:30:14.410 回答
2

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

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

   return Json(validationResult, JsonRequestBehavior.AllowGet)
}
于 2013-02-14T10:32:37.383 回答
0
public JsonResult ActionName(string SomeNumber)
{...}

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

于 2013-02-14T10:23:33.917 回答