Я использую Asp.Net 4 MVC 3.0 и Razor.Мне нужно проверить равенство двух строк.Так что я сделал это, используя атрибут для класса.Я получил код от здесь .
Вот как я использовал атрибут.
[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; }
}
А вот реализация пользовательского интерфейса двух полей.
<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;
ТеперьПроблема в том, что даже если значения не совпадают, сообщение об ошибке не всплывает.Я не понимаю причину такого поведения.Нужна помощь.
Спасибо всем.