ASP.NET MVC3:如何在自定义AjaxHelper中启用不显眼的验证

时间:2013-01-14 14:22:46

标签: asp.net-mvc-3 unobtrusive-validation ajaxhelper

我有一个自定义AjaxHelper,它呈现一个启用了ajax的下拉列表。代码如下。帮助程序运行良好,但是当验证失败时,它没有添加输入验证错误类,因此它不会以我想要的方式突出显示其他表单元素。在Html帮助器中,我可以合并HtmlHelper.GetUnobtrusiveValidationAttributes()给出的属性。但是我如何在AjaxHelper中执行此操作?

    public static MvcHtmlString DropDownList(this AjaxHelper ajaxHelper, string name,
        IEnumerable<SelectListItem> list, string optionLabel,
        AjaxOptions ajaxOptions, object htmlAttributes)
    {
        var tag = new TagBuilder("select");
        StringBuilder options = new StringBuilder();
        tag.MergeAttribute("name", name);
        tag.MergeAttribute("id", name);
        TagBuilder option;

        if (optionLabel != null)
        {
            option = new TagBuilder("option");
            option.MergeAttribute("value", string.Empty);
            option.SetInnerText(optionLabel);
            options.Append(option.ToString());
        }

        foreach (SelectListItem item in list)
        {
            option = new TagBuilder("option");
            option.MergeAttribute("value", item.Value);
            if (item.Selected)
            {
                option.MergeAttribute("selected", "selected");
            }
            option.SetInnerText(item.Text);
            options.Append(option.ToString());
        }
        tag.InnerHtml = options.ToString();

        tag.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
        tag.MergeAttributes((ajaxOptions ?? new AjaxOptions()).ToUnobtrusiveHtmlAttributes());
        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
    }

0 个答案:

没有答案