【发布时间】:2011-01-23 21:31:04
【问题描述】:
如何在 ASP.NET MVC2 中创建一个表单,将数据发送到控制器,控制器将某些内容添加到数据库中,然后重定向到主页?你能给我一个例子/sn-p它是如何在视图中完成的吗?
由于某种原因,我的表单中有错误。代码如下:
AddEvent.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Add Event</h2>
<% using (Html.BeginForm()) { %>
<div>
<%= Html.LabelFor(x => x.EventName) %>:
<%= Html.TextBoxFor(x => x.EventName) %>
</div>
<div>
<%= Html.LabelFor(x => x.EventDate) %>:
<%= Html.TextBoxFor(x => x.EventDate) %>
</div>
<div>
<%= Html.LabelFor(x => x.EventLocation) %>:
<%= Html.TextBoxFor(x => x.EventLocation) %>
</div>
<div>
<%= Html.LabelFor(x => x.EventDescription) %>: </br>
<%= Html.TextAreaFor(x => x.EventDescription) %>
</div>
<input type="submit" value="Submit" />
<% } %>
HomeController.cs
public ActionResult AddEvent()
{
return View();
}
[HttpPost]
public ActionResult AddEvent(Event e)
{
e.EventCreatorName = Session["UserName"].ToString();
DatabaseModels db = new DatabaseModels();
db.AddEvent(e);
return RedirectToAction("Index", "Home");
}
DatabaseModels.cs
public bool AddEvent(Event e)
{
anEvent eventToAdd = new anEvent();
eventToAdd.creator_nickname = e.EventCreatorName;
eventToAdd.event_category = 1; // TODO
if (e.EventDate == null)
{
eventToAdd.event_date = new DateTime();
}
else
{
eventToAdd.event_date = DateTime.Parse(e.EventDate);
}
eventToAdd.event_location = e.EventLocation;
eventToAdd.event_name = e.EventName;
m_db.AddToevents(eventToAdd);
m_db.SaveChanges();
return true;
}
我在表单中输入详细信息,我得到以下异常:
此属性不能设置为空值。
在event_location。谁能帮忙解决这个问题?
【问题讨论】:
-
你检查过 e.EventLocation 的值是多少吗?根据您的描述,它似乎为空,而 event_location 不能为空。
-
我已经尽可能地调试了它,据我所知,控制器没有得到任何插入到表单中的数据。
-
好吧,显然我忘记了
{get; set;}...它现在可以工作了。
标签: asp.net-mvc-2