2010-03-03 226 views
0

嘗試使用MVC客戶端驗證時,我得到「formElement爲null」。 有沒有人有任何想法可能是什麼問題?formElement爲null,Mvc客戶端驗證

Sys.Mvc.NumberValidator.create =函數(規則){返回Function.createDelegate(新Sys.Mvc.NumberValidator(),新Sys.Mvc.NumberValidator()驗證。);}

這裏是我的模型:


public class EmailViewModel 
    { 
     /// 
     /// The user's current email address 
     /// 
     public string CurrentEmailAddress { get; set; } 

     /// 
     /// User's new email address 
     /// 
     [EmailAddress(IsRequired = true, ErrorMessage = "Please enter a valid email address.")] 
     public string NewEmailAddress { get; set; } 

     /// 
     /// User's confirmed new email address 
     /// 
     [EmailAddress(IsRequired = true, ErrorMessage = "Please enter a valid email address. Your emails do not match.")] 
     public string ConfirmNewEmailAddress { get; set; } 

     public EmailViewModel() 
     { 
      CurrentEmailAddress = "[email protected]"; 
      NewEmailAddress = string.Empty; 
      ConfirmNewEmailAddress = string.Empty; 
     } 
    } 

這裏是從主網頁的腳本引用:

MicrosoftAjax.js
MicrosoftMvcAjax.js
MicrosoftMvcValidation.js

我不知道,如果這一切都將出現,但這裏是視圖代碼:

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

<%= Html.ValidationSummary(true, "There was an error when processing your request") %> 
<% Html.EnableClientValidation(); %> 
<% Html.BeginForm(); %> 
    <div class="SecureForm_Wrapper"> 
     <label class="Styled"> 
      <img alt="Reqired" src="../../Content/Images/Misc/required.png" /> 
      New E-Mail</label> 
     <div class="TheField"> 
      <%= Html.TextBoxFor(m => m.NewEmailAddress, new { id = "NewEmailAddress", name = "NewEmailAddress", @class = "CommonTextBox" }) %> 
      <%= Html.ValidationMessageFor(m => m.NewEmailAddress) %> 
     </div> 
    </div> 
    <div class="SecureForm_Wrapper"> 
     <label class="Styled"> 
      <img alt="Reqired" src="../../Content/Images/Misc/required.png" /> 
      Confirm New E-Mail</label> 
     <div class="TheField"> 
      <%= Html.TextBoxFor(m => m.ConfirmNewEmailAddress, new { id = "ConfirmNewEmailAddress", name = "ConfirmNewEmailAddress", @class = "CommonTextBox" })%> 
      <%= Html.ValidationMessageFor(m => m.ConfirmNewEmailAddress) %> 
     </div> 
    </div> 
    <div id="BottomButtonContainer"> 
     <a class="button" href="#" id="SubmitButton" style="font-weight: bold;"><span>Save</span></a> 
     <a class="button" href="#" onclick="this.blur(); return false;"><span>Cancel</span> 
     </a> 
    </div> 
    <% Html.EndForm(); %> 

,這裏是

沒有人有任何想法,以什麼可能是這個問題?

回答

0

當我更改視圖模型以使用必需屬性(並刪除IsRequired屬性)時,您的視圖模型和視圖似乎對我來說驗證不錯。我還必須在您的表單中添加一個提交按鈕。也許問題出在你實現EmailAddress驗證器的時候?

您可能希望對問題的格式更加謹慎,因爲它會使解析有點困難。作爲參考,這裏是視圖模型和清理我正在使用該作品的視圖。

視圖模型:

public class EmailViewModel 
{ 
    /// 
    /// The user's current email address 
    /// 
    public string CurrentEmailAddress { get; set; } 

    /// 
    /// User's new email address 
    /// 
    [Required(ErrorMessage = "Please enter a valid email address.")] 
    public string NewEmailAddress { get; set; } 

    /// 
    /// User's confirmed new email address 
    /// 
    [Required(ErrorMessage = "Please enter a valid email address. Your emails do not match.")] 
    public string ConfirmNewEmailAddress { get; set; } 

    public EmailViewModel() 
    { 
     CurrentEmailAddress = "[email protected]"; 
     NewEmailAddress = string.Empty; 
     ConfirmNewEmailAddress = string.Empty; 
    } 
} 

查看:

<%= Html.ValidationSummary(true, "There was an error when processing your request") %> 
<% Html.EnableClientValidation(); %> 

<% using (Html.BeginForm()) 
    { %> 

    New E-Mail 
    <%= Html.TextBoxFor(m => m.NewEmailAddress)%> 
    <%= Html.ValidationMessageFor(m => m.NewEmailAddress)%> 
    <br /> 

    Confirm New E-Mail 
    <%= Html.TextBoxFor(m => m.ConfirmNewEmailAddress)%> 
    <%= Html.ValidationMessageFor(m => m.ConfirmNewEmailAddress)%> 
    <br /> 

    <input type="submit" value="Submit" /> 

<% } %> 

<script src="<%= ResolveUrl("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript" language="javascript"></script> 
<script src="<%= ResolveUrl("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript" language="javascript"></script> 
<script src="<%= ResolveUrl("~/Scripts/MicrosoftMvcValidation.js") %>" type="text/javascript" language="javascript"></script> 
+0

格雷格,我刪除了EmailAddress的驗證屬性,但仍然收到同樣的異常。另外,我對我的問題做了一些重新格式化。我使用的是從Beta2升級的MVC2 RC。我想知道我是否有錯誤的腳本文件...? – devlife 2010-03-04 12:25:47

+1

您的觀點沒有提交一個(除非那裏提供的JavaScript不包括在內)。當我向視圖添加一個提交按鈕時,它仍然適用於我。包含的文件看起來是正確的,只要它們是與RC2一起發佈的文件,而不是beta版本,因爲它們改變了它們對客戶端驗證的一些方式。 如果您不知所措,請嘗試創建一個新的MVC2 RC2應用程序,並將相同的視圖/模型放入其中,並查看它是否適用於您。 – 2010-03-04 12:43:17

+0

事實證明,我的主頁上有一個表單,另一個表單是內容視圖。非常感謝您的幫助Greg。 – devlife 2010-03-04 23:46:36