Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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.NETMVC5在数据库中添加对象时遇到的困难_C#_Asp.net Mvc - Fatal编程技术网

C# ASP.NETMVC5在数据库中添加对象时遇到的困难

C# ASP.NETMVC5在数据库中添加对象时遇到的困难,c#,asp.net-mvc,C#,Asp.net Mvc,在我的项目中寻求帮助。正在尝试使用输入表单将对象添加到数据库。这是我的密码: 家庭控制器 public class HomeController : Controller { EventsContext db = new EventsContext(); public ActionResult Index() { IEnumerable<Event> events = db.Events;

在我的项目中寻求帮助。正在尝试使用输入表单将对象添加到数据库。这是我的密码:

家庭控制器

   public class HomeController : Controller
    {   
        EventsContext db = new EventsContext();

        public ActionResult Index()
        {
            IEnumerable<Event> events = db.Events;
            ViewBag.Events = events;
            return View();

        }
        [HttpGet]
        public ActionResult CreateEvent()
        {
            return View();

        }
         [HttpPost]
        public ActionResult CreateEvent(AddEvent addEvent)
        {
            db.AddEvents.Add(addEvent);
            db.SaveChanges();

            return View("index");
        }
    }
事件类别:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PhClub.Models
{
    public class Event
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Date { get; set; }
        public string Time { get; set; }
        public string Location { get; set; }
        public string Responsible { get; set; }
    }
}
它在硬编码事件中正常工作

public class EventDbInitializer : DropCreateDatabaseAlways<EventsContext>
    {
        protected override void Seed(EventsContext db)
        {
            db.Events.Add(new Event { Title = "Name of Event", Date = "18/11/2017", Time = "20:00", Location = "Adress", Responsible = "Name" });
            db.Events.Add(new Event { Title = "Name of Event", Date = "03/03/2017", Time = "19:00", Location = "Adress", Responsible = "Name2" });
             //db.Events.Add(new Event { Title = "Title3, Date = "04/03/2017", Time = "217:00", Location = "School", Responsible = "Name"});

            base.Seed(db);
        }
    }
公共类EventDbInitializer:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(EventsContext db)
{
db.Events.Add(新事件{Title=“事件名称”,Date=“18/11/2017”,Time=“20:00”,Location=“address”,Responsible=“Name”});
db.Events.Add(新事件{Title=“事件名称”,Date=“03/03/2017”,Time=“19:00”,Location=“address”,Responsible=“Name2”});
//db.Events.Add(新事件{Title=“Title3,Date=“04/03/2017”,Time=“217:00”,Location=“School”,Responsible=“Name”});
基部种子(db);
}
}

如果我在按submit后理解正确,则应使用CreateEvent post方法,并将事件对象的所有元素传递给数据库中的create和Event。之后,应将其填充到页面上。但是,新事件没有。我没有看到什么?

您的表单发布在哪里?:

<form method="post" action="">

根据这一点,它将发布到当前的URL。如果这是索引操作,那么您只是发布回索引操作,而不会向数据库添加任何内容

(顺便说一句,这是一个熟悉一些基本调试的好机会。在服务器端操作方法中放置断点并调试应用程序。查看在发布表单时调用哪个方法。查看那里发生了什么以及向服务器发送了什么值。)

使用ASP.NET MVC表单帮助程序,而不是像那样手动编写
标记。类似于以下内容:

@using(Html.BeginForm("CreateEvent", "Home"))
{
    <!--- all the HTML in your form -->
}
@使用(Html.BeginForm(“CreateEvent”、“Home”))
{
}

表单的其他部分也可以从这些帮助程序的使用中受益,这样表单就可以根据模型的结构更动态地生成,而不需要您手动维护。有许多MVC示例和教程演示了这一点。在“MVC表单帮助程序”上快速搜索“潜在客户,以及其他地方。

您的表格张贴在哪里?”

<form method="post" action="">

根据这一点,它将发布到当前的URL。如果这是索引操作,那么您只是回发到索引操作,它不会向数据库添加任何内容

(顺便说一句,这是一个熟悉一些基本调试的好机会。在服务器端操作方法中放置断点并调试应用程序。查看在发布表单时调用哪个方法。查看那里发生了什么以及向服务器发送了什么值。)

不要像那样手动编写
标记,而是使用ASP.NET MVC表单帮助器。大概是这样的:

@using(Html.BeginForm("CreateEvent", "Home"))
{
    <!--- all the HTML in your form -->
}
@使用(Html.BeginForm(“CreateEvent”、“Home”))
{
}

表单的其余部分也可以从这些帮助程序的使用中受益,这样表单就可以根据模型的结构更动态地生成,而不需要手动维护。有许多MVC示例和教程演示了这一点。谷歌在“MVC表单助手”上的快速搜索会带来很多好处。

从外观上看,您正在CreateEvent中向
db.AddEvents添加内容,但在Index方法中列出了
db.Events
中的内容

您的种子正在添加到
db.Events
,这就是您的硬编码项被列出的原因


尝试将对
AddEvents
的引用更改为
Events
。我认为这将解决您的问题。

从外观上看,您正在CreateEvent中向
db.AddEvents添加内容,但在Index方法中列出了
db.Events
中的内容

您的种子正在添加到
db.Events
,这就是您的硬编码项被列出的原因


尝试将对
AddEvents
的引用更改为
Events
。我想这会解决你的问题。

谢谢大卫,我会调查的汉克斯大卫,我会调查的