2014-01-28 39 views
0

我想獲得validationmessage工作時,對話框加載一個部分視圖,但有驗證錯誤,我有這個問題。MVC-使用validationmessagefor在jquery對話框中的錯誤

這裏是js代碼的一部分:

buttons: { 
     "Save": { 
      text: 'Save', 
      class: 'dialogBtnBlue', 
      click: function (event, ui) { 
       var form = $('#dayoff'); 
       $.ajax({ 
        cache: false, 
        async: true, 
        type: "POST", 
        url: form.attr('action'), 
        data: form.serialize(), 
        success: function() { 

         $("#newHolidayWindow").dialog('close'); 
        }, 
        complete: function() { 
         $('#_page_'+ counter).load("PublicHolidaysTable", { id: id, page: counter }); 
        }, 
        error: function() { 
         // HERE 


        }, 

我需要這個錯誤發生,當我與「警報(」填場「)進行測試,它的工作原理,我不得不做的是正確設置它,但我不知道如何做,我已經嘗試了很多東西。

這裏是視圖:

 @model Coats.TimeOFFEntMvcWeb.Models.Days_Off 

<div class="grid" style="width: 600px !important;margin-top: -30px;"> 
    @using (Html.BeginForm("AddNewPublicHoliday_Create", "Administration", FormMethod.Post, new { id = "dayoff" })) 
    { 
     @Html.ValidationSummary(true) 
    <div class="row"> 
     <h3 style="font-weight: bold">Adding Public Holiday</h3> 
    </div> 

    <div class="row"> 
     <h3>Date</h3> 
     <h4>Select public holiday date.</h4> 
     <div class="input-control text span3" > 
      @Html.DisplayFor(model => model.Region_ID) 
         @Html.EditorFor(model => model.Date) 
      @Html.ValidationMessageFor(model => model.Date) 
      </div> 
    </div> 
      <div class="row" style="width: 800px"> 
     <h3>Title</h3> 
     <h4>Fill in public holiday name.</h4> 

       @Html.HiddenFor(model => model.Region_ID) 

       <div class="input-control text span3"> 
        @Html.EditorFor(model => model.Days_Off_Name) 
        @Html.ValidationMessageFor(model => model.Days_Off_Name) 
       </div> 
</div> 

     } 
</div> 
<script src="~/Scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script> 

2個動作用於此:

 public ActionResult AddNewPublicHoliday(long id) 
    { 
     Days_Off day = new Days_Off() { Region_ID = id }; 


     return PartialView(day); 
    } 

    [HttpPost] 
    public ActionResult AddNewPublicHoliday_Create(Day_Off day) 
    { 

      db = new Entities(); 
      db.Days_Off.Add(day); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 


    } 

對話框負載AddNewPublicHoliday(這是我想要的驗證消息顯示,因爲他們將在常規頁面上)。您可以看到,AddNewPublicHoliday_Create僅以Post方式存在,並由beginform調用。

任何建議我應該如何做到這一點,而不是徹底改變我的js代碼的樣子?

回答

0

這是因爲jquery validate插件在dom加載時加載。你應該解析你的動態表單,這個表單在開始時不在這裏。

var form = $("#myForm"); 
form.removeData('validator'); 
form.removeData('unobtrusiveValidation'); 
$.validator.unobtrusive.parse(form); 
+0

雖然這可能也可能是問題的一部分,但我也有麻煩,應該在'錯誤'之後放入js代碼,在那裏評論// HERE。我只是通過操作加載相同的視圖? –

+0

這是警告用戶有錯誤並且無法加載視圖的地方。例如,您可以顯示消息錯誤(使用警報或顯示錯誤的div) – binard