Как я могу получать сообщения ValidationSummary программно? - PullRequest
3 голосов
/ 19 октября 2010

Я создал HtmlHelper, который помогает мне показывать модальное диалоговое окно jQuery: я устанавливаю сообщение в TempData контроллера, и если сообщение не является нулевым, помощник пишет код jquery + html, чтобы всплывающие окна появлялись после обратной передачи.Но мне нужно показать результаты проверки в виде сообщения (то же сообщение, которое отображается с помощью ValidationSummary), и я понятия не имею, как это сделать.Кто-нибудь может мне помочь?Я делаю это правильно?

Мой helper.cs:

[...] 
        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 Ответ

3 голосов
/ 19 октября 2010

Вы можете сделать что-то вроде этого:

StringBuilder sb = new StringBuilder();

foreach (ModelState state in ModelState.Values)
    foreach (ModelError error in state.Errors)
        sb.AppendFormat("<div>{0}</div>", error.ErrorMessage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...