2012-07-19 78 views
0

我在使用客户端验证与数据注释相结合时遇到问题。 该项目使用ASP.NET Framework 4.5,一个带有MVP模式的Web应用程序和jQuery Ajax调用来动态加载用户控件。使用数据注释进行客户端验证

这是包含需要被验证所述输入元件中的(剥离的)用户控制:

<form id="insertArtist" class="form-horizontal"> 
<fieldset> 
<legend>Add new artist</legend> 
    <div class="control-group"> 
     <label class="control-label" for="name">Name</label> 
     <div class="controls"> 
      <asp:TextBox runat="server" ID="name" ClientIDMode="Static" CssClass="input-medium"></asp:TextBox> 
      <ml:DataAnnotationValidator runat="server" ID="davName" ControlToValidate="name" EnableClientScript="true" PropertyToValidate="Name" SourceTypeName="Music.Library.Domain.Models.Artist, Music.Library.Domain"> 
     </ml:DataAnnotationValidator> 
    </div> 
    <div class="form-actions"> 
     <button id="save" class="btn btn-primary" name="submit" type="submit">Save</button> 
     <button id="cancel" class="btn">Cancel</button> 
    </div> 
</div> 
</form> 

这个用户控件获取的使用下面的AJAX调用动态加载:

$('#add').click(function() { 
    $.ajax({ 
     url: "/Artist/Manage/Insert.ascx.axd", 
     type: "POST", 
     dataType: "html", 
     success: function (obj) { 
      $('#body_artist').html($(obj)); 
     } 
    }); 
}); 

这执行jQuery的,当用户点击保存:

$('#save').click(function (event) { 
    event.preventDefault(); 

    $.ajax({ 
     url: "/artist/add.axd", 
     type: "POST", 
     dataType: "html", 
     cache: false, 
     async: true, 
     data: 'Ajax=true&' + $('#insertArtist').serialize(), 
     beforeSend: function (jqXHR, settings) { 
      $('#loading').show(); 
     }, 
     success: function (data) { 
      if (data == "succes") { 
       showNotification('succes', 'Succesfully added artist'); 
      } else { 
       showNotification('error', 'Error while adding artist: ' + data); 
      } 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      showNotification('error', 'Error while adding artist: ' + data); 
     }, 
     complete: function() { 
      $('#loading').hide(); 
     } 
    }); 
}); 

现在,由于asp.net控件没有触发器,所以自定义数据注释验证器将不会进行验证。

我试着验证使用Javascript,使用Page_ClientValidate(),ValidateEnable()和Validate()方法。不幸的是,当我尝试这个时,我一直得到同样的错误:

Page_ClientValidate is not defined 

其他方法的情况也是如此。 我在这里结束了。

是否因为UserControl是动态加载的,这些客户端验证方法不起作用?我已将EnableClientScript设置为true。

还有没有人有如何实现这个另一个想法?我真的很想使用数据注释。

在此先感谢!

回答

相关问题