MVC中My97date無法進行ValidationMessage修改

來源:互聯網
上載者:User

標籤:

上次使用C#擴充方法,對HtmlHelper進行擴充。但是Html.ValidationMessageFor並沒有對日期非空驗證提示。

查看源碼的時候發現對比自己產生的input,多了data-val這些屬性。那麼只需要在產生input的時候加上該屬性即可。

 var vas = htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata);
 tagBuilder.MergeAttributes(vas);


完整代碼如下:
public static MvcHtmlString CalendarFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,    Expression<Func<TModel, TProperty>> expression)        {            TagBuilder tagBuilder = new TagBuilder("input");            ModelMetadata metadata = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);            string name = ExpressionHelper.GetExpressionText(expression);            htmlHelper.ValidateFor(expression);            tagBuilder.MergeAttribute("name", name);            tagBuilder.GenerateId(name);            tagBuilder.MergeAttribute("type", "text");            //核心代碼,直接通過這個方法可以擷取屬性上的驗證資訊,如:“data-val= ....”。            var vas = htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata);            //string類型,看有沒長度限制,如果有,增加maxlength,minlength            if (metadata.ModelType == typeof(string))            {                var len = metadata.ContainerType.GetProperty(name).GetCustomAttribute(typeof(StringLengthAttribute));                if (len != null)                {                    var stringlength = (StringLengthAttribute)len;                    if (stringlength.MaximumLength > 0)                    {                        tagBuilder.MergeAttribute("maxlength", stringlength.MaximumLength.ToString());                    }                    if (stringlength.MinimumLength > 0)                    {                        tagBuilder.MergeAttribute("minlength", stringlength.MinimumLength.ToString());                    }                }            }            //如果model值不為,null,進行賦值。            if (metadata.Model != null)            {                tagBuilder.MergeAttribute("value", metadata.Model.ToString());            }            tagBuilder.MergeAttributes(vas);            tagBuilder.MergeAttribute("class", "Wdate");            tagBuilder.MergeAttribute("onclick", "WdatePicker({el:‘" + name + "‘})");            return new MvcHtmlString(tagBuilder.ToString());        }

 

這樣大功告成。

MVC中My97date無法進行ValidationMessage修改

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.