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
。我想这会解决你的问题。谢谢大卫,我会调查的汉克斯大卫,我会调查的