Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC:“;加上“评论”;在下面;详情;“的;门票;_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC:“;加上“评论”;在下面;详情;“的;门票;

C# ASP.NET MVC:“;加上“评论”;在下面;详情;“的;门票;,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我对ASP.NETMVC还相当陌生。这个想法很直截了当,但我似乎无法让它发挥作用 我有一张“票”,可以在/Tickets/Details/[id]下查看。在这张票下面是一个评论列表和一个“添加评论”部分。一开始,我单独测试了它,并手动编写了TicketID。现在我需要将当前票证的id和整个票证保存在这个注释中,以供以后使用。成功保存注释后,应刷新(票据的)页面 基于以前在ASP的经验,我在我的票证细节下面尝试了这个 <div class="panel panel-info"> <

我对ASP.NETMVC还相当陌生。这个想法很直截了当,但我似乎无法让它发挥作用

我有一张“票”,可以在/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>
但在返回时,它给了我一个借口:

传递到字典的模型项的类型为“System.Data.Entity.DynamicProxies.Ticket_5309a05301e0FE6AD5614FE3ED9E54D6FAB46DFEAFB2A38B43411FACD044441DF5”,但此字典需要“Cronos.Models.TicketComment”类型的模型项

我不知道下一步该怎么办。我读到的一件事是将TicketCommentsController合并到TicketController中,但这感觉很混乱


有人能帮忙吗?

我建议你发布视图。 根据异常消息,您只能传递

TicketComment
到您的视图(检查第一行,它应该是@model Cronos.Models.TicketComment,它定义了此视图中的模型)


您将票证传递给了该视图。

该视图需要一个
TicketComment
取而代之的是您发送的票证代理,它使用了默认的创建视图

而不是

return View(ticket);
成功保存时重定向,并让details操作查找并显示其自己的模型。这个


一个以MVC为中心的例子:

我明白你的意思。我花了一段时间才意识到,但当我将返回视图留空时,它遍历了TicketComments视图的Create.cshtml。我想返回值会转到特定票据的详细信息页面。我最终还是回到了页面上,但是评论的文本框被填满了。你知道这是否是保存评论后刷新页面的正确方法吗?重定向到操作…听起来就像我认为的那样。不幸的是,我得到了一个例外:{“不允许子操作执行重定向操作”。}
Html.RenderAction(“create”,“TicketComments”)应该是一个表单,并由用户触发以执行表单发布。现在的方式将在视图渲染时触发(作为子操作)创建。
return View(ticket);
[HttpPost]
public ActionResult Create([Bind(Include="ID, comments")] ticketComment)
{
    if (ModelState.IsValid)
    {
        ...
        return RedirectToAction("Details", "Ticket", new { Id = ticket.ID });
    }
    return View(ticketComment);
}