2013-10-31 47 views
1

在我的MVC应用程序中,电子邮件验证在本地完美工作,但在发布和部署到服务器时无效。我比较了本地文件和部署文件的html源代码,没有什么区别。我的Razor视图标记是电子邮件验证在MVC中不起作用

<li> 
     <p><strong>Email: </strong>@Model.CurrentEmailAddress <span class="deliverychange" onclick="showHidden('emailchange');">(Change email)</span></p> 
     <div id="emailchange" class="fullborder" style="display: none;"> 
      <div class="orderrow newemailaddress"> 
       @Html.LabelFor(m => m.UpdatedEmailAddress) 
       @Html.TextBoxFor(m => m.UpdatedEmailAddress, new { @onkeypress = "showEmailChangeConfirmation();" }) 
       @Html.ValidationMessageFor(m => m.UpdatedEmailAddress) 
      </div> 

      <div id="updatedemailkeypress" style="display: none;"> 
       <div class="orderrow checkboxrow emailchangeconfirm"> 
        @Html.LabelFor(m => m.UpdateEmailAddress) 
        @Html.EnumRadioButtonFor(m => m.UpdateEmailAddress, false) 
       </div> 
      </div> 

      <div class="clear">&nbsp;</div> 
     </div> 
    </li> 

和我的模型是

[DataType(DataType.EmailAddress)] 
    [RegularExpression(@"^([\w.-]+)@([\w-]+)((.(\w){2,3})+)$", ErrorMessage = "Email is not valid")] 
    [Display(Name = "Enter new email address: ")] 
    public string UpdatedEmailAddress { get; set; } 


    [Display(Name = "We will use ****")] 
    public YesNo UpdateEmailAddress { get; set; } 
+2

检查您的计算机和服务器上的ASP.NET MVC版本和所有相关的程序集是否相同。数据注释属性在版本之间可能会有不同的表现。 – Slavo

+1

特别是任何组件? - 由于我删除了现有文件 – rumi

+1

System.Web,System.Web.Mvc,System.Web.Razor,System.Web.Webpages之后已在服务器上发布完整应用程序。可能还有更多。 – Slavo

回答

1

在花费大量时间后,我发现发布向导没有将jquery.validate-vsdoc.js复制到脚本文件夹中。我手动将其复制到服务器,并开始工作。我从现在开始不会信任发布向导。

0

尝试使用dataannotationsextensions库,你可以从这里下载的NuGet。

,只是添加电子邮件属性模型这样

using DataAnnotationsExtensions; 
     [Required] 
     [DataType(DataType.EmailAddress)] 
     [Email] 
     public string UpdatedEmailAddress { get; set; } 
1

请重新检查表单标签是存在的。

表单验证通过验证表单有效方法实际工作。 所以,表单必须存在。

希望这会有所帮助。

相关问题