我是ASP.NET MVC的新手。这个想法很简单,但我似乎无法使其发挥作用。
我有一张"票",可以在/ Tickets / Details / [id]下查看。此票证下方是一个评论列表和一个"添加评论"部分。一开始我单独测试了所有内容并手动编写了TicketID。现在我需要在此评论中保存当前票证的ID和整个票证以供日后使用。成功保存评论后,应刷新(票证的)页面。
根据之前的ASP经验,我在故障单详细信息中尝试了这个
<div class="panel panel-info">
<div class="panel-heading">Comments</div>
<div class="panel-body">
@{
Html.RenderAction("create", "TicketComments");
}
</div>
我在TicketCommentsController.cs中尝试了以下内容:
public ActionResult Create([Bind(Include = "ID, body")] TicketComment ticketComment)
{
Ticket ticket = db.Tickets.Find(ticketComment.ID);
if (ModelState.IsValid)
{
ticketComment.UserID = User.Identity.GetUserId();
ticketComment.AanmaakDateTime = DateTime.Now.ToLocalTime();
ticketComment.UpdateDateTime = DateTime.Now.ToLocalTime();
ticketComment.ParentTicketId = ticket.ID;
ticketComment.ParentTicket = ticket;
db.TicketComments.Add(ticketComment);
db.SaveChanges();
return View(ticket);
}
return View(ticket);
}
但是在返回时它给了我一个赘述:
&#34;传递到字典中的模型项的类型是&#39; System.Data.Entity.DynamicProxies.Ticket_5309A05301E0FE6AD5614FE3ED9E54D6FAB46DFEAFB2A38B4341FACD04441DF5&#39;,但此字典需要类型为&#39; Cronos.Models的模型项.TicketComment&#39;&#34;
我对下一步做什么感到困惑。我读到的一件事是在TicketsController中合并TicketCommentsController,但这感觉很麻烦。
有人可以帮忙吗?
答案 0 :(得分:0)
我建议您发布视图。 根据异常消息,您只能传递
TicketComment
到您的视图(检查第一行,它应该是@model Cronos.Models.TicketComment,它在此视图中定义模型)
您已将Ticket传递给该视图。
答案 1 :(得分:0)
视图需要return View(ticket);
而不是您发送Ticket代理,它使用默认的Create视图。
而不是
[HttpPost]
public ActionResult Create([Bind(Include="ID, comments")] ticketComment)
{
if (ModelState.IsValid)
{
...
return RedirectToAction("Details", "Ticket", new { Id = ticket.ID });
}
return View(ticketComment);
}
重定向成功保存并让详细信息操作查找并显示其自己的模型。 PRG pattern。
{{1}}
更多以MVC为中心的例子:https://www.stevefenton.co.uk/2011/04/asp-net-mvc-post-redirect-get-pattern/