2011-09-30 129 views
1

當我嘗試在應用程序中實現ASP.net MVC 3 Unobtrusive客戶端驗證時,呈現的html不會生成由JQuery生成的span標記。ASP.net MVC 3 JQuery模式彈出的不顯眼客戶端驗證問題

我只有下面的渲染HTML和我用JQuery模式彈出窗口作爲我的部分視圖的容器。

<input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" /> 

然而,當我用不顯眼的客戶端驗證用了JQuery的模態彈出它正常工作在相同的應用程序如下。

<div class="editor-field"> 
    <input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" /> 
    <span class="field-validation-valid" data-valmsg-for="City" data-valmsg-replace="true"></span> 
</div> 

當我在JQuery Modal Popup中使用Unobtrusive Client驗證時,是否需要實現任何東西?

的JQuery彈出代碼

$(document).ready(function() { 
     $('#actionPanelDialogs div').dialog({ 
      autoOpen: false, 
      modal: true, 
      width: 700, 
      appendToBody: true 
     }); 


     $('#actions a').click(function (event) { 
      event.stopPropagation(); 
      event.preventDefault(); 
      var link = $(this); 
      var action = link.attr('href'); 
      var dialogDivId = link.attr('rel'); 

      var dialogDiv = $('#' + dialogDivId); 

      $.get(action, null, function (data) { 
       dialogDiv.html(data); 

       dialogDiv.dialog('open');     

      }); 
      return false; 
     }); 
}); 
+0

你可以發表你的JavaScript代碼的彈出? – ryudice

回答

0

發現問題,

我使用HTML表單創建表單元素如下。

<form action="@Url.Action("Create", "Person")" enctype="multipart/form-data" method="post" id="contactForm"> 

當我使用Html幫手時,它工作正常。

@{using (Html.BeginForm("Create", "Person", new { enctype = "multipart/form-data", id = "contactForm" })) 
8

您必須手動觸發添加到DOM任何新元素的解析。

jQuery.validator.unobtrusive.parse("#modalPopup"); 

如果您使用jQuery UI

$(".selector").dialog({ 
    open: function(event, ui) { 
     jQuery.validator.unobtrusive.parse(ui); 
    } 
}); 
+1

仍然不能正常工作 – marvelTracker

+0

非常有幫助!謝謝。 – BlackjacketMack

+0

來自jQuery文檔:**注意:ui對象是空的,但包含與其他事件的一致性**,因此您可能必須使用選擇器來查找需要解析的元素 – RMK

0

對於使用引導情態動詞使用下面的代碼的人:

$('#myModal').on('shown.bs.modal', function() { 
    jQuery.validator.unobtrusive.parse($(this)); 
}) 

感謝約什爲它的膽量。

0

已嘗試過所有的方法,這是對我工作:

$(".showModal").click(function() { 
      var id = $(this).attr("data-id"); 
      $("#modal").load("/Controller/Action?id=" + id, function() { 
       $("#modal").modal(); 
       $.validator.unobtrusive.parse($("#modal")); 
      }) 
     }); 
相關問題