簡體   English   中英

自定義MVC幫助器ForModel和數據注釋

[英]Custom MVC Helper ForModel and Dataannotations

我已經創建了一個DatePickerFor Helper,但是它沒有獲取我的ViewModel的驗證器。

我的視圖模型:

public class Dates
{
    public DateTime ExpiringDate { get; set; }

    [Required(ErrorMessage = "This field is required!")]
    [LessThan("ExpiringDate")]
    public DateTime Start { get; set; }
}

我的助手:

public static MvcHtmlString DatePickerFor(this HtmlHelper helper,Expression<Func<TModel, TProperty>> expression /*, Some args*/)
{
     StringBuilder html = new StringBuilder();
                html.Append("<div class=\"input-group\">");
                html.Append("<span class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i></span>");
                html.Append("<input id=\"" + id + "\" type=\"text\" name=\"" + name + "\" value=\"" + dateValue + "\" class=\"form-control datepicker " + cssClass + "\" data-dateformat=\"dd/mm/yy\" placeholder=\"00/00/0000\" " + attrs + "/>");
                html.Append("</div>");
     return new MvcHtmlString(html.ToString());
    }

是否可以將“ data-val-required”和其他在viewmodel中定義的驗證添加到我的html中?

謝謝!

您可以嘗試覆蓋默認的TextBoxFor幫助器,並使用自定義屬性擴展輸出

    public static MvcHtmlString DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
    {
        var extendedAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

        extendedAttributes.Add("class", "form-control datepicker");
        extendedAttributes.Add("data-dateformat", "dd/mm/yy");
        extendedAttributes.Add("placeholder", "00/00/0000");

        return htmlHelper.TextBoxFor(expression, extendedAttributes);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM