我開始使用MVC,我目前正在開發一個應用程序。當我試圖將視圖中的數據傳遞給控制器操作時,遇到了一個小問題。無法將數據從視圖傳遞到控制器
這是我的模型:
public class TicketIndexModel
{
public IEnumerable<Ticket> ticketList { get; set; }
public Ticket newTicket { get; set; }
}
這是我的控制器操作:
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");
}
並在視圖,首先我要讓所有的票之後,我有一個小的表單添加一張新票。這就是表單的樣子。
@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>
}
我面臨的問題是,當我嘗試添加一個新的機票,車票參數始終是空的,所以如果(ModelState.Isvalid)< - 永遠是假的,所以我不能添加新門票DB。
有沒有人有任何想法爲什麼?
後來編輯:
我的模型現在是:現在
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();
的問題,我現在是這樣的:
如果在模型中,我評論[必填]我可以添加icket,如果沒有,在控制器中,每次我提交一張新票時簽名中的newTicket都是空的。但是,控制器輸入if(ModelState.IsValid),並在db.SaveChanges(票證)上發生錯誤。
我需要服務器端和客戶端驗證。你可以幫我嗎 ?
你的'AddTicket'行爲不應該有'TicketIndexModel'參數而不是'Ticket'嗎? –
爲什麼在我僅使用票證時使用TicketIndexModel? –
在瀏覽器中調查您的http POST請求的值,就像在Chrome開發人員欄中一樣。然後將您發送的值與Ticket類的屬性進行比較。他們看起來如何? – citykid