jquery远程验证是将输入字段名称(mymodel.field1)的前缀添加到data-val-remote-additionalfields中列出的每个附加字段。在我的附加字段中,我有一个不属于模型的隐藏字段,因此它有一个普通的名称,如" fieldhidden"而不是" mymodel.fieldhidden"。
我已经通过查看控制器上的请求对象并确认其中一个查询字符串键是" mymodel.fieldhidden"来证实了这一点。而不是" fieldhidden"并且数据为空。很确定它是null因为jquery验证正在寻找" mymodel.fieldhidden"当然无法找到它。
有没有办法通过mvc属性,不是自动前缀或通过jquery操作来生成jquery,以便不自动为name属性具有格式化为" model.fieldname"的值的其他字段添加前缀。添加远程验证的地方?
[Remote("ValidationMethod", "Controller", AdditionalFields = "FieldNameInModel, ElementNameNotInModel")]
public string FieldToRemoteValidate { get; set; }
答案 0 :(得分:2)
我最不得不做的是两次添加隐藏字段。我已经在控制器中有多个动作的通用设置,期望名称不变。因此,通过使用jquery验证库所期望的命名约定添加隐藏字段,然后将其作为查询字符串的一部分进行传输。命名约定是id属性的Model_Field和name属性的Model.Field。
然后我使用带有前缀的bind参数属性,如下所示:
[Bind(Prefix = "Model.FieldToRemotevalidate")] string FieldToRemoteValidate