asp.net 4.5 webforms model binding : client side validation supported?

强颜欢笑 提交于 2019-12-04 23:56:50

问题


I'm a huge fan of asp.net 4.5 webforms model binding using data annotations.

ascx:

     <asp:FormView ItemType="Contact" runat="server" DefaultMode="Edit" 
     SelectMethod="GetContact" UpdateMethod="SaveContact">
        <EditItemTemplate>   

              <asp:ValidationSummary runat="server" ID="valSum" />

              Firstname: <asp:TextBox  runat="server"  ID="txtFirstname" Text='<%#: BindItem.Firstname %>' /> 


              Lastname: <asp:TextBox  runat="server"  ID="txtLastname" Text='<%#: BindItem.Lastname %>' />

              Email:  <asp:TextBox  runat="server"  ID="txtEmail" Text='<%#: BindItem.Email %>' />     

              <asp:Button ID="Button1"  runat="server" Text="Save" CommandName="Update" />
        </EditItemTemplate>   
    </asp:FormView>

.cs:

    public void SaveContact(Contact viewModel)
    {
        if (!Page.ModelState.IsValid)
        {
            return;
        }            
    }              

    public Contact GetContact() 
    {
         return new Contact();
    }

Model:

    public class Contact
    {
        [Required]
        [StringLength(10, ErrorMessage="{1} tis te lang")]   
        public string Firstname { get; set; }

        [Required]
        [StringLength(10)]
        public string Lastname { get; set; }

        [Required]
        [EmailAddress]       
        public string Email { get; set; }

    }

Question:

Is client side validation supported out-of-the-box in webforms like in MVC? Or should we rely on third party libraries (DAValidation). Is it possible to port the goodness of Html.EnableClientValidation() to webforms ?

Regards,

Bart


回答1:


As we have found in our ASP.NET WebForms projects, there is no overall useful reuse of the Model's validation attributes for client side validation.

For example, a contact data model, with various properties like name, email, birthday etc... is not always used the same way. Sometimes it may have some mandatory fields, sometimes not, and even the required input data may differ at various points in the application.

Thus, in our projects, we use both a client side validation implementation, and the model attributes.

The general idea we apply is:

  • On the client side, we want to be as specific as possible, to avoid unnecessary postbacks and to provide the user with immediate, specific responses.
  • On the server side, we apply the model attributes plus more database and business-oriented validation rules and fail not so specifically. Plus, if required, some "inter-property" validation does take place when some fields are dependent from each other.

For the client side, we have chosen the jQuery Validate Plugin (http://jqueryvalidation.org/).

We even have built our own set of controls (that derive from the built-in WebControls), which render various (and even some custom) data rules.




回答2:


Guys webforms have complete client side validation, it just needs to be specified once in the model, that's the whole point of Model Binding and DataAnnotations check these links below. In short Add the following reference to your Model class library project. using System.ComponentModel.DataAnnotations;

Add this line to your web.config

<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms"/>

Follow this link for details Webforms Model Validation

And this link for Microsoft's complete documentation Microsoft documentaion



来源:https://stackoverflow.com/questions/19925239/asp-net-4-5-webforms-model-binding-client-side-validation-supported

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!