c# - 远程验证不会将数据传递给操作

标签 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)
{...}

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

GET /ControllerName/ActionName?MyModel.SomeNumber =34189736 

我怎样才能让它发挥作用? (我无法传递整个模型 MyModel,也无法在我的 View 中更改 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)

最佳答案

如果您使用嵌套的 ViewModels,您需要接受父 ViewModel 作为您的 Validation 操作中的参数。例如:

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

    //....
}

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

    //....
}

在验证 Controller 中:

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

     }
}

关于c# - 远程验证不会将数据传递给操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872285/

相关文章:

asp.net-mvc - 使用 MVC 错误配置 roleManager 提供程序

html - ASP.NET MVC : colouring specific parts on an XML

jquery-plugins - 当不同目标的不同事件被触发时显示单个qtip?

c# - 为什么RestSharp不支持Windows Phone上的同步请求?

c# - 最低延迟的小数据互联网传输协议(protocol)? C#

C#接口(interface)类+继承VS纯抽象类

asp.net-mvc - 如何阻止 NewRelic 在我的本地机器上运行?

php - Laravel 仅在设置密码后更新密码

php - 正则表达式验证地址字符串不包含邮政信箱模式

c# - 你如何使用 MSChart for .Net 中的 Zooming UI