簡體   English   中英

用於ajax表單的ASP.NET MVC 2服務器端驗證

[英]ASP.NET MVC 2 server-side validation for ajax form

我遇到了以下問題。 我正在為網站開發一個表單,這個表單應該有驗證。 我想使用本機ASP.NET MVC 2驗證功能,但對它很頑固。 我有一個通過$ .get加載的表單,並使用jQuery UI模式對話框顯示。 我找到的所有示例都解釋了如何使用簡單形式使用MVC驗證並避免使用Ajax表單。

我可以為此表單啟用客戶端驗證,但我需要正確處理服務器端驗證。 如何處理ajax表單的服務器端驗證模型錯誤?

將對象傳遞回控制器時,必須將代碼包裝在If ModelState.IsValid

以下是我編輯用戶的簡化版本。 第一個“EDIT”將User對象發送給View。 第二個“編輯”處理視圖中的帖子。

Function Edit() As ActionResult
    ''# do stuff to populate your User
    Return View(User)
End Function

<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal user as User)
    If ModelState.IsValid Then
        ''# do your valid stuff
    Else
        ''# The posted form was not valid, send the user back
        Return View(user)
    End If
End Function

這是C#中的相同內容

public ActionResult Edit()
{
    // do stuff to populate your User
    return View(User);
}

[AcceptVerbs(HttpVerbs.Post)]
public object Edit(User user)
{
    if (ModelState.IsValid) {
            // do your valid stuff
    } else {
        //'# The posted form was not valid, send the user back
        return View(user);
    }
}

編輯:

在您的視圖中,如果要添加AJAX驗證,只需添加以下內容即可。

    <% 
        Html.EnableClientValidation() ''# This is where all the magic happens.  It will build your clientside validation for you out of your MetaData.
        Using Html.BeginForm("Edit", "Users")
    %>

      <!-- all your markup crap -->
            <tr>
                <td>
                    <%: Html.LabelFor(Function(model) model.UserName)%></td>
                <td>
                    <%: Html.TextBoxFor(Function(model) model.UserName) %>
                    <%: Html.ValidationMessage("UserName", "*")%><br />
                </td>
            </tr>

      <!-- somewhere you'll want to add a Validation Summary of all your errors -->
      <%= Html.ValidationSummary("Oops!, please correct the errors...") %>


      <% End Using%>
      <!-- bottom of the page -->

          <script src="../../Assets/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
          <script src="../../Assets/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
          <script src="../../Assets/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

編輯:

以下是使用Ajax.BeginForm進行渲染的一些信息
http://singulartechnologies.com/asp-net-mvc-ajax-beginform-sample-code
http://msdn.microsoft.com/en-us/library/dd381533.aspx
http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM