C# 如何验证自定义ASP.NET MVC帮助程序
我需要得到自定义ASP.NET MVC帮助程序的工作验证 助手C# 如何验证自定义ASP.NET MVC帮助程序,c#,asp.net-mvc,validation,helper,C#,Asp.net Mvc,Validation,Helper,我需要得到自定义ASP.NET MVC帮助程序的工作验证 助手 public static class AutocompleteHelper { public static MvcHtmlString AutocompleteFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string actio
public static class AutocompleteHelper
{
public static MvcHtmlString AutocompleteFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string actionUrl)
{
return CreateAutocomplete(helper, expression, actionUrl, null, null);
}
public static MvcHtmlString AutocompleteFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string actionUrl, bool? isRequired, string placeholder)
{
return CreateAutocomplete(helper, expression, actionUrl, placeholder, isRequired);
}
private static MvcHtmlString CreateAutocomplete<TModel, TValue>(HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string actionUrl, string placeholder, bool? isRequired)
{
var attributes = new Dictionary<string, object>
{
{ "data-autocomplete", true },
{ "data-action", actionUrl }
};
if (!string.IsNullOrWhiteSpace(placeholder))
{
attributes.Add("placeholder", placeholder);
}
if (isRequired.HasValue && isRequired.Value)
{
attributes.Add("required", "required");
}
attributes.Add("class", "form-control formControlAutocomplete");
attributes.Add("maxlength", "45");
Func<TModel, TValue> method = expression.Compile();
var value = method((TModel)helper.ViewData.Model);
var baseProperty = ((MemberExpression)expression.Body).Member.Name;
var hidden = helper.Hidden(baseProperty, value);
attributes.Add("data-value-name", baseProperty);
var automcompleteName = baseProperty + "_autocomplete";
var textBox = helper.TextBox(automcompleteName, null, string.Empty, attributes);
var builder = new StringBuilder();
builder.AppendLine(hidden.ToHtmlString());
builder.AppendLine(textBox.ToHtmlString());
return new MvcHtmlString(builder.ToString());
}
}
我似乎要验证,但没有显示任何消息。
有什么线索吗?文本字段的名称是
ProductUID\u autocomplete
,但是用于显示错误消息的验证消息绑定到ProductUID
因此,请确保将错误消息绑定到同一属性:
@Html.ValidationMessage("ProductUID_autocomplete")
似乎您可能需要验证此字段的任何自定义逻辑都在ModelState
中的ProductUID\u autocomplete
项下注入了错误
话虽如此,为什么不在自定义助手中调用ValidationMessage
helper呢?这样,您可以在视图中键入的内容就更少了,而那些名称后缀为\u autocomplete
的逻辑将只保留在帮助程序中。非常感谢Darin!你总是帮忙!上帝保佑你,伙计!
@Html.ValidationMessage("ProductUID_autocomplete")