ASP.NET MVC:"添加评论"在"细节" "票"

时间:2016-11-08 18:42:07

标签: c# asp.net asp.net-mvc

我是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,但这感觉很麻烦。

有人可以帮忙吗?

2 个答案:

答案 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/