我开始使用 MVC,目前正在开发一个应用程序。当我尝试将一些数据从 View 传递到 Controller 操作时,我遇到了一个小问题。
这是我的模型:
public class TicketIndexModel
{
public IEnumerable<Ticket> ticketList { get; set; }
public Ticket newTicket { get; set; }
}
这是我的 Controller 操作:
public ActionResult AddTicket(Ticket ticket)
{
string user = User.Identity.Name;
TicketDetail ticketDetails = new TicketDetail();
if (ModelState.IsValid)
{
ticket.DateCreated = DateTime.Now;
ticket.Status = "submitted";
ticket.UserName = user;
db.Tickets.Add(ticket);
db.SaveChanges();
//some other stuff
return RedirectToAction("Index");
}
在 View 中,首先我显示所有门票,然后我有一个小表格来添加新门票。这就是表单的样子。
@using (Html.BeginForm("AddTicket","Ticket",FormMethod.Post)) {
<div class="editor-label">
@Html.LabelFor(model => model.newTicket.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.newTicket.Title)
@Html.ValidationMessageFor(model => model.newTicket.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.newTicket.Description)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.newTicket.Description, new { rows= "8",cols="2"})
@Html.ValidationMessageFor(model => model.newTicket.Description)
</div>
<p>
<input type="submit" value="Submit" />
</p>
}
我面临的问题是,当我尝试添加新票证时,票证参数始终为空,因此 If(ModelState.Isvalid) <- 始终为 false,因此我无法向数据库添加新票证。
有人知道为什么吗?
稍后编辑:
我的模型现在是:
public IPagedList<Ticket> ticketList { get; set; }
//[Required(ErrorMessage ="Title required")]
[Display(Name = "Title")]
public string TicketTitle { get; set; }
//[Required(ErrorMessage="Description Required")]
[Display(Name = "Description")]
public string TicketDescription { get; set; }
我现在的方法是:
[HttpPost]
public ActionResult AddTicket(TicketIndexModel newTicket)
{
string user = User.Identity.Name;
Ticket ticket = new Ticket();
if (ModelState.IsValid)
{
ticket.Title = newTicket.TicketTitle;
ticket.Description = newTicket.TicketDescription;
ticket.DateCreated = DateTime.Now;
ticket.Status = "open";
ticket.UserName = user;
db.Tickets.Add(ticket);
db.SaveChanges();
我现在遇到的问题如下:
如果在模型中,我注释[必需]我可以添加票证,如果没有,在 Controller 中,每次提交新票证时,签名中的 newTicket 为空。但是, Controller 输入 if(ModelState.IsValid) 并且我在 db.SaveChanges(ticket) 处收到错误。
我需要服务器端和客户端验证。你能帮我吗?
最佳答案
您的 AddTicket 方法应如下所示
[HttpPost]
public ActionResult AddTicket(TicketIndexModel ticketIndexModel)
然后从传入的对象访问 newTicket。
关于asp.net-mvc - 无法将数据从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045701/