C# MVC4:每次我尝试应用验证时,我都会得到一个答案:“我不知道怎么做。”;没有类型为';IEnumerable<;选择列表项>'&引用;

C# MVC4:每次我尝试应用验证时,我都会得到一个答案:“我不知道怎么做。”;没有类型为';IEnumerable<;选择列表项>'&引用;,c#,.net,asp.net-mvc,asp.net-mvc-4,razor,C#,.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我看过许多其他堆栈溢出问题,有人报告了这个问题,但没有一个能帮上忙。但只有当我尝试对模型属性应用某种验证时,以及当我尝试强制执行该验证时(例如,将返回日期放在出发日期之前),才会出现错误。如果我选择了正确的值,它就会工作 public int Id { get; set; } [Required(ErrorMessage = "-Select-")] public string Departure { get; set; } [Required(ErrorMessage

我看过许多其他堆栈溢出问题,有人报告了这个问题,但没有一个能帮上忙。但只有当我尝试对模型属性应用某种验证时,以及当我尝试强制执行该验证时(例如,将返回日期放在出发日期之前),才会出现错误。如果我选择了正确的值,它就会工作

public int Id { get; set; }
    [Required(ErrorMessage = "-Select-")]
    public string Departure { get; set; }

    [Required(ErrorMessage = "-Select-")]
    public string Arrivals { get; set; }

    [Required(ErrorMessage = "Date Expected!")]
    [DataType(DataType.Date)]
    public System.DateTime DepartureDate { get; set; }

    [Required(ErrorMessage = "Date Expected!")]
    [DataType(DataType.Date)]
    [GreaterThan("DepartureDate", ErrorMessage="Retrun date must be after departure date!")]
    public System.DateTime ReturnDate { get; set; }
观点:

<p>From: </p>
@Html.DropDownList("Departures", ViewData["departures"] as List<SelectListItem>);
@Html.ValidationMessageFor(model => model.Departure, "Please choose a location");
<p>To: </p>
@Html.DropDownList("Arrivals", ViewData["arrivals"] as List<SelectListItem>);
@Html.ValidationMessageFor(model => model.Arrivals, "Please choose a location");
还有更多的
。添加
,这对到达者也是重复的

        [HttpGet]
    public ActionResult BookFlight()
    {
        // Check if the user is logged in, if not redirect to log in page
        if (User.Identity.IsAuthenticated)
        {
            Departures.Add(new SelectListItem { Text="-Select-", Value="0" });
            Departures.Add(new SelectListItem { Text = "London", Value = "London" });
            Departures.Add(new SelectListItem { Text = "Manchester", Value = "Manchester" });
            Departures.Add(new SelectListItem { Text = "Edinburgh", Value = "Edinburgh" });
            Departures.Add(new SelectListItem { Text = "East Midlands", Value = "East Midlands" });
            Departures.Add(new SelectListItem { Text = "Bristol", Value = "Bristol" });
            ViewData["departures"] = Departures;

            Arrivals.Add(new SelectListItem { Text = "-Select-  ", Value = "0" });
            Arrivals.Add(new SelectListItem { Text = "Paris", Value = "Paris" });
            Arrivals.Add(new SelectListItem { Text = "Barcelona", Value = "Barcelona" });
            Arrivals.Add(new SelectListItem { Text = "Madrid", Value = "Madrid" });
            Arrivals.Add(new SelectListItem { Text = "Amsterdam", Value = "Amsterdam" });
            Arrivals.Add(new SelectListItem { Text = "Prague", Value = "Prague" });
            Arrivals.Add(new SelectListItem { Text = "Nice", Value = "Nice" });
            Arrivals.Add(new SelectListItem { Text = "Milan", Value = "Milan" });
            Arrivals.Add(new SelectListItem { Text = "Geneva", Value = "Geneva" });
            Arrivals.Add(new SelectListItem { Text = "Rome", Value = "Rome" });
            ViewData["arrivals"] = Arrivals;

            return View();

        }
        else
            return RedirectToAction("../User/LogIn");
    }

    [HttpPost]
    public ActionResult BookFlight(FlightDetailsMD flights, FormCollection form)
    {
        Random rand = new Random();
        Random rand2 = new Random();
        if (ModelState.IsValid) 
        {
            var departureVal = form["departures"];
            var arrivalVal = form["arrivals"];
            using (var db = new FlightDetailsEntities()) 
            {
                var user = db.FlightDetails.Create();

                user.Id = rand.Next(100000, 199999) + rand2.Next(100000, 199999);
                user.Departure = departureVal;
                user.Arrivals = arrivalVal;
                user.DepartureDate = flights.DepartureDate;
                user.ReturnDate = flights.ReturnDate;

                db.FlightDetails.Add(user);
                db.SaveChanges();

                MailMessage mail = new MailMessage();
                mail.To.Add(User.Identity.Name);
                mail.From = new MailAddress(User.Identity.Name);
                mail.Subject = "Booking Confirmation";
                string Body = "Email from: <i>insert company name</i><br><br> Your booking is confirmed! You are going to " + user.Arrivals +
                    " on " + string.Format("{0:dd/MM/yyyy}", user.DepartureDate) + " and returning to " + user.Departure + " on " + string.Format("{0:dd/MM/yyyy}", user.ReturnDate) +
                    ".<br> Thank you for booking with us and we hope you have a nice time!" + "<br><h2>Reference #" + user.Id + "</h2>";
                mail.Body = Body;
                mail.IsBodyHtml = true;
                //SmtpClient client = new SmtpClient();
                using (SmtpClient client = new SmtpClient())
                {
                    client.EnableSsl = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new NetworkCredential(User.Identity.Name, "RecurveBow");
                    client.Host = "smtp.live.com";
                    client.Port = 587;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.Send(mail);
                }
                  /*
                    ViewData["departures"] = Departures;
                    ViewData["arrivals"] = Arrivals;
                */

                /*
                    ViewData["departures"] = " ";
                    ViewData["arrivals"] = " ";
                */

                return RedirectToAction("BookingDetails", "Home");
            }
        }

        return View();
    }
[HttpGet]
公共行动结果BookFlight()
{
//检查用户是否已登录,如果未登录,则重定向到登录页面
if(User.Identity.IsAuthenticated)
{
添加(新SelectListItem{Text=“-Select-”,Value=“0”});
添加(新的SelectListItem{Text=“London”,Value=“London”});
添加(新的SelectListItem{Text=“Manchester”,Value=“Manchester”});
添加(新的SelectListItem{Text=“Edinburgh”,Value=“Edinburgh”});
添加(新建SelectListItem{Text=“East Midlands”,Value=“East Midlands”});
添加(新的SelectListItem{Text=“Bristol”,Value=“Bristol”});
ViewData[“偏离”]=偏离;
Add(新SelectListItem{Text=“-Select-”,Value=“0”});
Add(新建SelectListItem{Text=“Paris”,Value=“Paris”});
Add(新的SelectListItem{Text=“Barcelona”,Value=“Barcelona”});
Add(新SelectListItem{Text=“Madrid”,Value=“Madrid”});
Add(new SelectListItem{Text=“Amsterdam”,Value=“Amsterdam”});
Add(新建SelectListItem{Text=“Prague”,Value=“Prague”});
Add(新建SelectListItem{Text=“Nice”,Value=“Nice”});
Add(新的SelectListItem{Text=“Milan”,Value=“Milan”});
Add(新的SelectListItem{Text=“Geneva”,Value=“Geneva”});
Add(新的SelectListItem{Text=“Rome”,Value=“Rome”});
ViewData[“到达”]=到达;
返回视图();
}
其他的
返回重定向操作(“../User/LogIn”);
}
[HttpPost]
公共行动结果BookFlight(航班详情SMD航班,表格收集表格)
{
Random rand=新的Random();
Random rand2=新的Random();
if(ModelState.IsValid)
{
var departureVal=表格[“偏离”];
var arrivalVal=表格[“arrivals”];
使用(var db=new flightdetailsenties())
{
var user=db.FlightDetails.Create();
user.Id=rand.Next(100000,199999)+rand2.Next(100000,199999);
user.department=departureVal;
user.Arrivals=arrivalVal;
user.DepartureDate=flights.DepartureDate;
user.ReturnDate=flights.ReturnDate;
db.FlightDetails.Add(用户);
db.SaveChanges();
MailMessage mail=新的MailMessage();
mail.To.Add(User.Identity.Name);
mail.From=新邮件地址(User.Identity.Name);
mail.Subject=“预订确认”;
string Body=“电子邮件发件人:插入公司名称

您的预订已确认!您将转到“+用户.到达”+ 在“+string.Format”({0:dd/MM/yyyy}”,user.DepartureDate)+”上返回“+user.department+”,在“+string.Format”({0:dd/MM/yyyyy}”,user.ReturnDate)上返回到“+user.department+”+ “
感谢您与我们一起预订,希望您玩得愉快!”+“
参考”#“+user.Id+”; mail.Body=Body; mail.IsBodyHtml=true; //SmtpClient=新的SmtpClient(); 使用(SmtpClient=new SmtpClient()) { client.enablesl=true; client.UseDefaultCredentials=false; client.Credentials=新的网络凭据(User.Identity.Name,“RecurveBow”); client.Host=“smtp.live.com”; client.Port=587; client.DeliveryMethod=SmtpDeliveryMethod.Network; 客户端。发送(邮件); } /* ViewData[“偏离”]=偏离; ViewData[“到达”]=到达; */ /* ViewData[“偏差”]=“”; ViewData[“到达量”]=“”; */ 返回重定向到操作(“预订详情”、“主页”); } } 返回视图(); }
做了一些更改。请查看:)

[HttpGet]
公共行动结果BookFlight()
{
//检查用户是否已登录,如果未登录,则重定向到登录页面
if(User.Identity.IsAuthenticated)
{
SetDepartureandArrival();
返回视图();
}
其他的
返回重定向操作(“../User/LogIn”);
}
公共作废SetDepartureandArrival()
{
添加(新SelectListItem{Text=“-Select-”,Value=“0”});
添加(新的SelectListItem{Text=“London”,Value=“London”});
添加(新的SelectListItem{Text=“Manchester”,Value=“Manchester”});
添加(新的SelectListItem{Text=“Edinburgh”,Value=“Edinburgh”});
添加(新建SelectListItem{Text=“East Midlands”,Value=“East Midlands”});
添加(新的SelectListItem{Text=“Bristol”,Value=“Bristol”});
ViewData[“偏离”]=偏离;
Add(新SelectListItem{Text=“-Select-”,Value=“0”});
        [HttpGet]
    public ActionResult BookFlight()
    {
        // Check if the user is logged in, if not redirect to log in page
        if (User.Identity.IsAuthenticated)
        {
            Departures.Add(new SelectListItem { Text="-Select-", Value="0" });
            Departures.Add(new SelectListItem { Text = "London", Value = "London" });
            Departures.Add(new SelectListItem { Text = "Manchester", Value = "Manchester" });
            Departures.Add(new SelectListItem { Text = "Edinburgh", Value = "Edinburgh" });
            Departures.Add(new SelectListItem { Text = "East Midlands", Value = "East Midlands" });
            Departures.Add(new SelectListItem { Text = "Bristol", Value = "Bristol" });
            ViewData["departures"] = Departures;

            Arrivals.Add(new SelectListItem { Text = "-Select-  ", Value = "0" });
            Arrivals.Add(new SelectListItem { Text = "Paris", Value = "Paris" });
            Arrivals.Add(new SelectListItem { Text = "Barcelona", Value = "Barcelona" });
            Arrivals.Add(new SelectListItem { Text = "Madrid", Value = "Madrid" });
            Arrivals.Add(new SelectListItem { Text = "Amsterdam", Value = "Amsterdam" });
            Arrivals.Add(new SelectListItem { Text = "Prague", Value = "Prague" });
            Arrivals.Add(new SelectListItem { Text = "Nice", Value = "Nice" });
            Arrivals.Add(new SelectListItem { Text = "Milan", Value = "Milan" });
            Arrivals.Add(new SelectListItem { Text = "Geneva", Value = "Geneva" });
            Arrivals.Add(new SelectListItem { Text = "Rome", Value = "Rome" });
            ViewData["arrivals"] = Arrivals;

            return View();

        }
        else
            return RedirectToAction("../User/LogIn");
    }

    [HttpPost]
    public ActionResult BookFlight(FlightDetailsMD flights, FormCollection form)
    {
        Random rand = new Random();
        Random rand2 = new Random();
        if (ModelState.IsValid) 
        {
            var departureVal = form["departures"];
            var arrivalVal = form["arrivals"];
            using (var db = new FlightDetailsEntities()) 
            {
                var user = db.FlightDetails.Create();

                user.Id = rand.Next(100000, 199999) + rand2.Next(100000, 199999);
                user.Departure = departureVal;
                user.Arrivals = arrivalVal;
                user.DepartureDate = flights.DepartureDate;
                user.ReturnDate = flights.ReturnDate;

                db.FlightDetails.Add(user);
                db.SaveChanges();

                MailMessage mail = new MailMessage();
                mail.To.Add(User.Identity.Name);
                mail.From = new MailAddress(User.Identity.Name);
                mail.Subject = "Booking Confirmation";
                string Body = "Email from: <i>insert company name</i><br><br> Your booking is confirmed! You are going to " + user.Arrivals +
                    " on " + string.Format("{0:dd/MM/yyyy}", user.DepartureDate) + " and returning to " + user.Departure + " on " + string.Format("{0:dd/MM/yyyy}", user.ReturnDate) +
                    ".<br> Thank you for booking with us and we hope you have a nice time!" + "<br><h2>Reference #" + user.Id + "</h2>";
                mail.Body = Body;
                mail.IsBodyHtml = true;
                //SmtpClient client = new SmtpClient();
                using (SmtpClient client = new SmtpClient())
                {
                    client.EnableSsl = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new NetworkCredential(User.Identity.Name, "RecurveBow");
                    client.Host = "smtp.live.com";
                    client.Port = 587;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.Send(mail);
                }
                  /*
                    ViewData["departures"] = Departures;
                    ViewData["arrivals"] = Arrivals;
                */

                /*
                    ViewData["departures"] = " ";
                    ViewData["arrivals"] = " ";
                */

                return RedirectToAction("BookingDetails", "Home");
            }
        }

        return View();
    }
[HttpGet]
    public ActionResult BookFlight()
    {
        // Check if the user is logged in, if not redirect to log in page
        if (User.Identity.IsAuthenticated)
        {
            SetDepartureandArrival();
            return View();

        }
        else
            return RedirectToAction("../User/LogIn");
    }
    public void SetDepartureandArrival()
    {
            Departures.Add(new SelectListItem { Text = "-Select-", Value = "0" });
            Departures.Add(new SelectListItem { Text = "London", Value = "London" });
            Departures.Add(new SelectListItem { Text = "Manchester", Value = "Manchester" });
            Departures.Add(new SelectListItem { Text = "Edinburgh", Value = "Edinburgh" });
            Departures.Add(new SelectListItem { Text = "East Midlands", Value = "East Midlands" });
            Departures.Add(new SelectListItem { Text = "Bristol", Value = "Bristol" });
            ViewData["departures"] = Departures;

        Arrivals.Add(new SelectListItem { Text = "-Select-  ", Value = "0" });
        Arrivals.Add(new SelectListItem { Text = "Paris", Value = "Paris" });
        Arrivals.Add(new SelectListItem { Text = "Barcelona", Value = "Barcelona" });
        Arrivals.Add(new SelectListItem { Text = "Madrid", Value = "Madrid" });
        Arrivals.Add(new SelectListItem { Text = "Amsterdam", Value = "Amsterdam" });
        Arrivals.Add(new SelectListItem { Text = "Prague", Value = "Prague" });
        Arrivals.Add(new SelectListItem { Text = "Nice", Value = "Nice" });
        Arrivals.Add(new SelectListItem { Text = "Milan", Value = "Milan" });
        Arrivals.Add(new SelectListItem { Text = "Geneva", Value = "Geneva" });
        Arrivals.Add(new SelectListItem { Text = "Rome", Value = "Rome" });
        ViewData["arrivals"] = Arrivals;
    }
    [HttpPost]
    public ActionResult BookFlight(FlightDetailsMD flights, FormCollection form)
    {
        Random rand = new Random();
        Random rand2 = new Random();
        if (ModelState.IsValid)
        {
            var departureVal = form["departures"];
            var arrivalVal = form["arrivals"];
            using (var db = new FlightDetailsEntities())
            {
                var user = db.FlightDetails.Create();

                user.Id = rand.Next(100000, 199999) + rand2.Next(100000, 199999);
                user.Departure = departureVal;
                user.Arrivals = arrivalVal;
                user.DepartureDate = flights.DepartureDate;
                user.ReturnDate = flights.ReturnDate;

                db.FlightDetails.Add(user);
                db.SaveChanges();

                MailMessage mail = new MailMessage();
                mail.To.Add(User.Identity.Name);
                mail.From = new MailAddress(User.Identity.Name);
                mail.Subject = "Booking Confirmation";
                string Body = "Email from: <i>insert company name</i><br><br> Your booking is confirmed! You are going to " + user.Arrivals +
                    " on " + string.Format("{0:dd/MM/yyyy}", user.DepartureDate) + " and returning to " + user.Departure + " on " + string.Format("{0:dd/MM/yyyy}", user.ReturnDate) +
                    ".<br> Thank you for booking with us and we hope you have a nice time!" + "<br><h2>Reference #" + user.Id + "</h2>";
                mail.Body = Body;
                mail.IsBodyHtml = true;
                //SmtpClient client = new SmtpClient();
                using (SmtpClient client = new SmtpClient())
                {
                    client.EnableSsl = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new NetworkCredential(User.Identity.Name, "RecurveBow");
                    client.Host = "smtp.live.com";
                    client.Port = 587;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.Send(mail);
                }


                return RedirectToAction("BookingDetails", "Home");
            }
        }
         SetDepartureandArrival();
        return View();
    }