Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;值';电子邮件地址';“无效”;asp.net mvc中的验证失败_C#_Validation_Asp.net Mvc 4 - Fatal编程技术网

C# &引用;值';电子邮件地址';“无效”;asp.net mvc中的验证失败

C# &引用;值';电子邮件地址';“无效”;asp.net mvc中的验证失败,c#,validation,asp.net-mvc-4,C#,Validation,Asp.net Mvc 4,我正在开发一个应用程序,我有一个表单,其中每个文本框都有验证。我包含了自定义验证语句。它们工作得更好。但是我有一个文本框的电子邮件地址数据类型。但是当我提交表单时,我遇到了错误“值'emailaddress'无效”…请查看我的代码,如果有任何错误,请告诉我。。 我的模范班是 [Table("email")] public class eMail { [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

我正在开发一个应用程序,我有一个表单,其中每个文本框都有验证。我包含了自定义验证语句。它们工作得更好。但是我有一个文本框的电子邮件地址数据类型。但是当我提交表单时,我遇到了错误“值'emailaddress'无效”…请查看我的代码,如果有任何错误,请告诉我。。 我的模范班是

[Table("email")]
   public  class eMail
    {
       [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
       public int ID { get; set; }

       [Required(ErrorMessage="The Name is Required")]
       [StringLength(20,ErrorMessage="The maximum length of the name should be 20 Characters")]
       [Display(Name="Your Name")]
       public string Name { get; set; }

       [Required(ErrorMessage = "Email is required")]
       [EmailAddress(ErrorMessage = "Enter a proper email address")]
       [StringLength(25, ErrorMessage = "Maximum length allowed for an email is 30 characters")]
       public string Email { get; set; }

       [Required(ErrorMessage="Please print your request")]
       [StringLength(200,ErrorMessage="Maximum Characters allowed Are 200")]
       [Display(Name="Prayer Request")]
       [DataType(DataType.MultilineText)]
       public string Request{get;set;}
    }
我的控制器是:

using CTCFremont.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CTCFremont.Controllers
{
    public class eMailController : Controller
    {
        private CTCFremontEntities db = new CTCFremontEntities();

        //
        // GET: /eMail/

        public ViewResult Index()
        {
            return View();
        }



        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /eMail/Create

        [HttpPost]
        public ActionResult Create(eMail email)
        {
            if (ModelState.IsValid)
            {
                db.eMails.Add(email);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(email);
        }

        //
        // GET: /eMail/Edit/5


        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }
}
我的看法是:

@model CTCFremont.Models.eMail

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<style type="text/css">
#RequestForm {
    position:absolute;
    top: 50%;
    left: 25%;
    width:30em;
    height:18em;
    margin-top: -9em; /*set to a negative number 1/2 of your height*/
    margin-left: -15em; /*set to a negative number 1/2 of your width*/
    border: 1px solid #ccc;
}
    div.request {
       box-shadow: 10px 10px 5px #888888
    }

</style>

<h2>Submit Your Prayer Request</h2>
@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)  
        <div id="#Actual" style ="background-image:url('../../Images1/pray.jpg')">
        <div class="request" id="RequestForm" style="width:1000px">
            <div class="container">
            <div class="editor-label">

            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="text-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Request)
        </div>
        <div class="editor-field"  >
            @Html.TextAreaFor(model => model.Request,new { style = "width:400px ",maxlength = 200 })
            @Html.ValidationMessageFor(model => model.Request)
        </div>
          <p>
            <input type="submit" value="Create" />
        </p>
        </div>     
        </div>    
        </div>

}


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

我相信原因是MVC模型绑定器在您的电子邮件模型类和该类的电子邮件属性之间混淆了

您可以通过在ModelState.IsValid上设置断点并验证ModelState.Errors对象来验证是否存在问题

此外,您是否可以尝试在引用电子邮件属性的任何位置将其重命名为Email1,并添加列属性以使其与表同步

类似这样的内容,然后尝试:

[Column("Email")]
        [Required]
        [EmailAddress(ErrorMessage = "Enter a proper email address")]
        [StringLength(25, ErrorMessage = "Maximum length allowed for an email is 30 characters")]
        public string Email1 { get; set; }

您正在尝试的电子邮件地址是什么?sujaysiddu@gmail.com,sujay@gmail.comNone上面的电子邮件中有一封正在运行有趣的问题是,您引用的错误消息没有出现在您的示例中的任何地方。。。您的模型错误是输入正确的电子邮件地址。您可能需要搜索源代码和在浏览器中可以找到的代码,以查看是否可以找到该消息。。。您提到的电子邮件应该通过
type=“email”
的浏览器验证、jQuery验证和MVC验证进行良好验证。。。这里还涉及到其他一些东西,我可以说MVC验证是必需的。我已经包含了这些jQuery验证文件
[Column("Email")]
        [Required]
        [EmailAddress(ErrorMessage = "Enter a proper email address")]
        [StringLength(25, ErrorMessage = "Maximum length allowed for an email is 30 characters")]
        public string Email1 { get; set; }