2011-06-18 98 views
0

有人可以幫助我。 我無法讓我的jQuery UI對話框進行驗證。 我試圖找到一個解決方案在這個網站和無數其他人,但雖然每個人似乎都有某種解決方案,我不能讓他們任何工作。 我的理解是,有時候很難描述一個問題,所以我寫了一個完整的應用程序,其中包含了希望弄清楚的最低必要條件。 在VIEW中,有一個警報(「保存」);我不希望看到這個對話框應該防止這種情況發生。 任何建議將非常感激地收到。與部分視圖jQuery ui對話框將不驗證(MVC3)

CONTACTMESSAGE

using System.ComponentModel.DataAnnotations; 

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

控制器:

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"); 
     } 
     } 
    } 

VIEW:

@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> 
} 

回答

0

只是在將表單加載到DOM後執行此操作

jQuery.validator.unobbstrusive.parse(jQuery('#EditForm')); 
+0

Hello Praveen。請你能告訴我我應該把你提到的那條線放在哪裏。我試圖把它放在幾個地方,但似乎沒有任何工作。如果它有幫助,我會用行號重新發布我的問題。 –