我有2个文本框,如果字段为空,则要进行验证。但是,我想根据条件不同地显示消息。
//在我的模型中
[Required(ErrorMessage ="Please enter Name")]
public string txtName { get; set; }
[Required(ErrorMessage = "Address")]
public string txtAddress { get; set; }
//在第一个视图中,出现两个文本框,因此消息应为“请输入姓名/地址”
@Html.ValidationMessageFor(m => m.txtName, "", new { @class = "error" })
@Html.ValidationMessageFor(m => m.txtAddress, "", new { @class = "error" })
//在第二个视图中,仅显示地址文本框,因此消息应为“请输入地址”
@Html.ValidationMessageFor(m => m.txtAddress, "", new { @class = "error" })
我不知道如何实现这一点.Anyoe有任何想法然后请分享。谢谢。
答案 0 :(得分:2)
根据你的评论你可以做点什么,但主要原则应该是一个" id"每页,ViewModel中的DataAnnotations与该一个输入相关联。必须解决这个问题,这有力地表明应该审查页面的设计。
您可以考虑:
(i)文本输入(注意TextBoxFor和TextBox):
@Html.TextBoxFor(m => m.txtAddress, new { @class = "some-class" })
@Html.ValidationMessageFor(m => m.txtAddress, "", new { @class = "error" })
// txtAddressTwo takes the value assigned to txtAddress in the ViewModel:
@Html.TextBox("txtAddressTwo", Model.txtAddress, new { @class = "some-class" })
@Html.ValidationMessage("txtAddressTwo", null, new { @class = "error" })
(ii)使用jQuery设置txtAddressTwo的验证规则:
$(function () {
$("#txtAddressTwo").rules("add", {
required: true,
messages: {
required: "xxx Please enter Address xxx"
}
});
});
(iii)在提交表格时协调价值(不是很好的做法)
$(function () {
$("#your-form-id").on("submit", function () {
// Work out the appropriate reconciliation using
var a = $("#txtAddress").val();
var b = $("#txtAddressTwo").val();
// For example (or something similar (very hacky))
if ($("#txtAddress").val() === "") {
$("#txtAddress").val($("#txtAddressTwo").val());
}
});
});
我无法帮助,但我认为必须有一些特殊的理由需要以这种方式解决它,我真的建议重新审视您对ViewModel中只有一个条目的限制。< / p>
无论如何,我希望这会有所帮助,让您走上解决方案的道路。
答案 1 :(得分:1)
有一个(快速和肮脏)的工作环境。在第二个视图中,使用带有jquery验证属性的普通html而不是usind @ Html.EditorFor(m =&gt; m.txtAddress)。
示例:
<input name="txtAddress" class="text-box single-line input-validation-error"
id="txtAddress"
type="text" value=""
data-val-required="Please enter Address" data-val="true">
请注意包含实际消息的data-val-required属性的用法。