MVC远程验证是将模型添加到网址

时间:2017-04-21 15:53:47

标签: c# asp.net-mvc begincollectionitem

我在一个字段上进行远程验证然后触发但是我得到一个500错误,说控制器方法的参数为null为空。实际发生的是模型名称被添加到url,这使得它无法找到该方法。

示例:

学生模特

    [Remote("CheckExistingStudent", "Student", AdditionalFields = "FirstName", ErrorMessage = "This student already exists!")]
    public string LastName { get; set; }
    public string FirstName { get; set; }

由于某种原因,验证触发时创建的url为:

http://localhost:4855/Student/CheckExistingStudent?Student.LastName=Waters&Student.FirstName=Nigel

注意学生。在网址中。

我尝试了几种不同的方法签名:

    public JsonResult CheckExistingResource(string FIrstName, string LastName)

    public JsonResult CheckExistingResource(StudentModel model)

第一个返回500错误(空参数)。通过学生模型的第二个获得了他的方法,但第一个&最后是空的。

我确信这种情况正在发生,因为我使用Html.BeginCollectionItem助手来构建动态列表,以便用户可以在同一页面上输入多个学生。 BCI助手的一部分是它用唯一索引重命名每个字段。

所以我不认为我可以阻止网站上的模型。在里面。有可能有模型。在方法参数名称?我试过,这是错误的。

1 个答案:

答案 0 :(得分:0)

也许模型绑定前缀是有序的:

public JsonResult CheckExistingResource([Bind(Prefix="Student")]StudentModel model)