Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证自定义ASP.NET MVC帮助程序_C#_Asp.net Mvc_Validation_Helper - Fatal编程技术网

C# 如何验证自定义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

我需要得到自定义ASP.NET MVC帮助程序的工作验证

助手

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")