Eri*_*ric 8 .net validation asp.net-mvc model-binding unobtrusive-validation
我知道如果我想将非顺序元素绑定到MVC中的列表,我可以使用此处Index描述的语法.
但是,我无法使用远程验证(使用该Remote属性).
例如,如果我有这样的模型:
public class AddUsers {
public List<User> Users { get; set; }
public string Comment { get; set; }
}
public class User {
[Remote("UsernameAvailable", "User")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后假设在我看来我有以下内容(我故意遗漏我正在使用的Html助手)
<input type="hidden" name="Users.Index" value="foo" />
<input type="text" name="Users[foo].Name" />
<input type="hidden" name="Users.Index" value="bar" />
<input type="text" name="Users[bar].Name" />
Run Code Online (Sandbox Code Playgroud)
在一个表格帖子中,该Index字段一直用于骑行,这有助于模型绑定器很好地绑定一切,如:
Comment=bla&Users.Index=foo&Users[foo].Name=john&Users.Index=bar&Users[bar].Name=bob
Run Code Online (Sandbox Code Playgroud)
但是当远程验证触发时,只有这个被发送到我的操作(两个单独的请求,每个被验证的项目一个):
Users[foo].Name=john
Users[bar].Name=bob
Run Code Online (Sandbox Code Playgroud)
没有Index,模型绑定器不知道如何处理这个问题.它既不能结合到User,一个List<User>,也不是AddUser.
这让我想到了我的问题.
有没有办法编写一个自定义模型绑定器,可以处理非顺序列表而无需使用Index表示法?我必须承认,我很难理解为什么这种Index符号是必要的(除非作为某种优化).
我正在使用MVC 4和.NET 4.5.
注意:我之前从未搞过自定义模型绑定器,所以我真的只是在寻找一些关于它是否可能(或者只是一个死胡同)的一般指导,以及可能的一些启动指针.
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |