代码之家  ›  专栏  ›  技术社区  ›  Retired_User

如何以编程方式获取验证摘要消息?

  •  3
  • Retired_User  · 技术社区  · 15 年前

    我创建了一个html helper,它可以帮助我显示jquery模式对话框:我在控制器的tempdata中设置了一条消息,如果消息不为空,helper会编写jquery+html代码,以便在回发后生成popup apears。 但我需要将验证结果显示为消息(与validationsummary显示的消息相同),我不知道如何完成这一点。有人能帮我吗?我这样做对吗?

    我的助手:

    [...] 
            public static string ModalDialogNotifier(this HtmlHelper helper)
            {
                string message = "";
                if (helper.ViewContext.TempData["message"] != null)
                    message = helper.ViewContext.TempData["message"].ToString();
            if (!String.IsNullOrEmpty(message))
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("<script>$(document).ready(function() {$.blockUI({ message: $('#mdiag')});$('#mdiagok').click(function() {$.unblockUI();return false;});})</script>");
                sb.AppendFormat("<div id='mdiag'>{0}<input type='button' id='mdiagok' value='Ok' /></div>", message);
                return sb.ToString();
            }
            return string.Empty;
        }
    [...]
    

    我的控制器:

     [HttpPost]
        [Authorize(Roles = "Admin")]
        public ActionResult Create(CreateUserModel Model)
        {
            if (!ModelState.IsValid)
            {
                this.TempData["message"] = "Model is not valid";
            }
            else
            {
               [...]
            }
            return View(Model);
        }
    

    我的看法是:

     [...]<%= Html.ModalDialogNotifier()%>[...]
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Alexander Prokofyev    15 年前

    你可以这样做:

    StringBuilder sb = new StringBuilder();
    
    foreach (ModelState state in ModelState.Values)
        foreach (ModelError error in state.Errors)
            sb.AppendFormat("<div>{0}</div>", error.ErrorMessage);