中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

愛上MVC~MVC4模型驗(yan)證可以放在前端

回到目錄

MVC4.0推(tui)出后,在模型驗證(zheng)上有了一(yi)個(ge)新的改(gai)近,它支持(chi)前端驗證(zheng),即在用(yong)戶POST之前,如果驗證(zheng)失敗,則Action(POST方式(shi)的)不會(hui)被執行(xing),而直接停留在原視圖(tu),這對于用(yong)戶體(ti)驗是(shi)好的,它就類似于ajax驗證(zheng)一(yi)樣,不會(hui)將(jiang)原頁重定向。

MVC4.0在view中引(yin)用了jqueryval文件后,即(ji)可實(shi)現客戶端實(shi)時驗證(zheng)

@section Scripts {
  @Scripts.Render("~/bundles/jqueryval")
}

如(ru)果你(ni)不需要走JS方(fang)式驗證(zheng),還是使(shi)用原來的(de)POST方(fang)法后再(zai)進(jin)行驗證(zheng)的(de)話,把(ba)上面那(nei)行刪除即可,當然,MVC為(wei)我(wo)(wo)們(men)提(ti)供的(de)驗證(zheng)展示(shi)可能(neng)不是我(wo)(wo)們(men)想要的(de),它(ta)往往會將“驗證(zheng)失敗的(de)提(ti)示(shi)信息”添加(jia)一個<span>然后為(wei)它(ta)加(jia)class,這可能(neng)并不是我(wo)(wo)們(men)想要的(de),因(yin)為(wei)我(wo)(wo)們(men)

的“錯誤提示”往往由前端開發人員提供的,所以,我們最需要的是“純文字”的錯誤提示,現在,我把MVC的ValidationMessageFor擴展方法進行了新的擴展,我叫它ValidationMessageTextFor,它會將模型里的(de)某個字段的(de)驗證(zheng)錯誤的(de)消息進行“純文字”的(de)輸出(chu),不(bu)

會有任何HTML標記,這才是我們所需要的,它也有不足,那就是目前并不支持前端實時模型驗證!

ValidationMessageTextFor原代碼如下,供大家學習與研究:

namespace System.Web.Mvc.Html
{
    /// <summary>
    /// MVC中對HtmlHelper擴展方法
    /// </summary>
    public static class MvcHtmlExtensions
    {
        /// <summary>
        /// 從ModelState中返回指定鍵(jian)對(dui)應的(de)驗證的(de)錯誤消息(xi)
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString ValidationMessageTextFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
        {

            var fieldName = ExpressionHelper.GetExpressionText(expression);

            var modelState = htmlHelper.ViewData.ModelState;
            if (!modelState.Keys.Contains(fieldName))
                return null;
            if (modelState[fieldName].Errors.Count == 0)
                return null;
            IList<string> errList = new List<string>();
            modelState[fieldName].Errors.ToList().ForEach(i =>
            {
                errList.Add(i.ErrorMessage);
            });
            return MvcHtmlString.Create(string.Join(",", errList));

        }
    }
}

現在輸出的錯(cuo)誤消息(xi)就(jiu)是純文字,如圖(tu)

 

回到目錄

posted @ 2015-04-03 09:15  張占嶺  閱讀(3507)  評論(3)    收藏  舉報