0
我正在使用Asp.Net 4 MVC 3.0和Razor。我需要檢查兩個字符串的相等性。所以我爲這個類使用了Attribute。我從here得到了代碼。
這是我如何使用該屬性。DataAnnotation不會彈出ErrorMessage
[Match("FaxNumber", "ConfirmFaxNumber", ErrorMessage = "Fax number must match")]
public class FaxModel
{
[Required, StringLength(maximumLength: 10, MinimumLength = 10),
RegularExpression(@"^([0-9](|-)?)?(\(?[0-9]{3}\)?|[0-9]{3})(|-)?([0-9]{3}(|-)?[0-9]{4})$",
ErrorMessage = "Enter correct fax number.")]
[Display(Name = "Fax number")]
public string FaxNumber { get; set; }
[Required, StringLength(maximumLength: 10, MinimumLength = 10),
RegularExpression(@"^([0-9](|-)?)?(\(?[0-9]{3}\)?|[0-9]{3})(|-)?([0-9]{3}(|-)?[0-9]{4})$",
ErrorMessage = "Enter correct fax number.")]
[Display(Name = "Confirm fax number")]
public string ConfirmFaxNumber { get; set; }
}
這裏是兩個字段的UI實現。
<div data-role="fieldcontain" class="template">
@Html.LabelFor(expression = (m => m.FaxNumber), labelText: "Fax number:") @Html.TextBoxFor(expression: expression, htmlAttributes: new { name = "FaxNumber", value = "${FaxNumber}" })
<blockquote>@Html.ValidationMessageFor(expression)</blockquote>
</div>
<div data-role="fieldcontain" class="template">
@Html.LabelFor(expression = (m => m.ConfirmFaxNumber), labelText: "Confirm fax number:")
@Html.TextBoxFor(expression: expression, htmlAttributes: new { name = "ConfirmFaxNumber", value = "" })
<blockquote>@Html.ValidationMessageFor(expression)</blockquote>
</div>
在上述的一段代碼expression
是System.Linq.Expressions.Expression<Func<MyModels.Fax.FaxModel, object>> expression;
現在的問題是,即使值誤匹配錯誤消息不冒泡。我沒有得到這種行爲的原因。需要幫助。
謝謝全部。
謝謝@Darin。它的工作,但我面臨一個屬性的新問題。一旦錯誤消息彈出到屏幕上,它不會重置。錯誤信息卡住了。其他所有屬性都正常工作。 – SocialCircus 2011-04-18 12:35:45