JQuery UI Диалог с PartialView не будет проверять (MVC3) - PullRequest
0 голосов
/ 18 июня 2011

Может кто-нибудь, пожалуйста, помогите мне. Я не могу получить свой пользовательский диалог jQuery для проверки. Я пытался найти решение на этом сайте и бесчисленное множество других, но, хотя у всех, кажется, есть какое-то решение, я не могу заставить любое из них работать. Я понимаю, что иногда бывает сложно описать проблему, поэтому я написал полное приложение, содержащее минимум, необходимый, чтобы все было ясно. В ПРОСМОТРЕ есть предупреждение («сохранено»); что я не хочу видеть, так как диалог должен помешать этому зайти так далеко. Любые предложения будут приняты с благодарностью.

CONTACTMESSAGE

using System.ComponentModel.DataAnnotations;

namespace TestValidation.Models
{
  public class ContactMessage
  {
    [Required(ErrorMessage = "Message is Requried")]
    public string Message { get; set; }
  }
}

CONTROLLER:

    namespace TestValidation.Controllers
    {
      public class HomeController : Controller
      {
        public ActionResult Index()
        {
          return View();
        }

        public ActionResult Edit()
        {
          return PartialView("MessageForm", 
            new ContactMessage{Message="Test"});
        }

        public ActionResult Save()
        {
          return Content("Saved");
        }
      }
    }

ВИД:

@model TestValidation.Models.ContactMessage
@{
  Layout = null;
}
<!DOCTYPE html>
<html>
<head>
  <title>ViewPage1</title>
  <link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="Stylesheet" type="text/css" />
  <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
  <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
  <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
</head>
<body>
  <a href="#" id="editButton">Dialog</a>
  <div id="Placeholder" title=""></div>
</body>
</html>
<script type="text/javascript">

  $(function () {

    $("#Placeholder").dialog({
      autoOpen: false, width: 400, height: 330, modal: true,
      buttons: {
        "Save": function () {
          $.post("/Home/Save",
                 $("#EditForm").serialize(),
                 function (data) {
                   alert("saved");
                   $("#Placeholder").dialog("close");
                 });
        },
        Cancel: function () { $(this).dialog("close"); }
      }
    });

    $("#editButton").click(function () {
      $("#Placeholder").html("")
                .dialog("option", "title", "Edit Message")
                .load("/Home/Edit/", function () {
                  $("#Placeholder").dialog("open");
                });

    });
  });

</script>

ЧАСТИЧНЫЙ ВИД:

@model TestValidation.Models.ContactMessage
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("null", "null", FormMethod.Post, new { id = "EditForm" }))
{
  @Html.ValidationSummary(true)

 <div class="editor-label">
    @Html.LabelFor(model => model.Message)
  </div>
  <div class="editor-field">
    @Html.EditorFor(model => model.Message)
    @Html.ValidationMessageFor(model => model.Message)
  </div>
} 

1 Ответ

0 голосов
/ 18 июня 2011

сразу после загрузки формы в DOM сделать это

jQuery.validator.unobbstrusive.parse(jQuery('#EditForm'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...