C# 我的PartialView每次都会导致我的应用程序崩溃

C# 我的PartialView每次都会导致我的应用程序崩溃,c#,asp.net,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc 5,我试图用数据库中的一些数据加载局部视图,但在运行应用程序时遇到以下问题: 不允许子操作执行重定向操作 我不知道为什么会发生这种情况,因为我对MVC技术非常陌生 以下是我在控制器中的PartialViewResult方法: public PartialViewResult UnReadEmails() { if (User.Id != null) { List<Emails> resultList = EmailController.GetUnreadEmail

我试图用数据库中的一些数据加载局部视图,但在运行应用程序时遇到以下问题:

不允许子操作执行重定向操作

我不知道为什么会发生这种情况,因为我对MVC技术非常陌生

以下是我在控制器中的
PartialViewResult
方法:

public PartialViewResult UnReadEmails()
{
   if (User.Id != null)
   {
      List<Emails> resultList = EmailController.GetUnreadEmailsByUserId(User.Id);
       return PartialView("~/Views/Emails/_UnReadEmails.cshtml", resultList);
   }
   return PartialView("Error, not found!");
}
编辑:

有趣的事实是,无论我在控制器的方法中写了什么,即使我注释了所有代码,它仍然会在视图中中断,这意味着它永远不会出现在控制器的方法中。我在UnReadEmails方法的一开始就把breakpoing放在那里,它从来没有被击中过,它总是在视图上被打断

MAURIZIO建议后编辑,将其更改为
@Html.RenderPartial
之后,我收到了以下问题:

找不到部分视图“未解析”,或没有视图引擎 支持搜索的位置。下列地点为 搜索:~/Views/Dashboard/UnReadEmails.aspx ~/Views/Dashboard/UnReadEmails.ascx~/Views/Shared/UnReadEmails.aspx ~/Views/Shared/UnReadEmails.ascx~/Views/Dashboard/UnReadEmails.cshtml ~/Views/Dashboard/UnReadEmails.vbhtml ~/Views/Shared/UnReadEmails.cshtml~/Views/Shared/UnReadEmails.vbhtml

编辑:

编译器错误消息:CS0120:非静态字段、方法或属性“MessageController.UnReadEmails()”需要对象引用

我尝试将UnReadEmails()设置为静态,但收到以下错误:

错误1非静态字段需要对象引用, 方法或属性'System.Web.Mvc.Controller.PartialView(字符串, 对象)“…控制器\Message\MessageController.cs


由于部分视图不在共享文件夹中,因此需要提供完整路径

{@Html.RenderPartial("~/Views/Emails/_UnReadEmails.cshtml")}
由于该视图需要电子邮件列表,因此需要将其添加为参数

{@Html.RenderPartial("~/Views/Emails/_UnReadEmails.cshtml",EmailController.GetUnreadEmailsByUserId(User.Id))}
最好的方法是在模型中创建一个属性(
List lstureademails
),并用
MessageController
的方法加载该电子邮件列表,这样就可以使用此指令呈现部分了:

{@Html.RenderPartial("~/Views/Emails/_UnReadEmails.cshtml",Model.lstUnreadEmails)}
如果您没有“主模型”,您可以将其存储在
视图包中,通过MessageController方法调用它

ViewBag.lstUnreadEmail‌s = E‌​mailController.Get‌‌​​Un‌​readEmailsByUserId(U‌​ser.Id);
在视图中使用此

{@Html.RenderPartial("~/Views/Emails/_UnReadEmails.cshtml",ViewBag.lstUnreadEmail‌​s)}

您是否尝试过使用@Html.RenderPartial(“UnreadEmails”,“Message”)?参数“Message”用于什么?RenderPartial方法的参数之一是否显示错误(void->object)?@MauricioGraciaGutierrez检查编辑我的朋友,我使用了{}大括号,解决了void->object问题。但在我应用RenderPartial后还有另一个问题控制器的名称是什么?@RMadd控制器的名称是MessageControllercan请检查我的编辑。请检查我答案的最后部分,因为从视图调用控制器方法不是一个好的做法。@Roxy'Pro不要混淆我建议的新属性(失意)用这个方法,你似乎使用这个方法似乎是一个很好的方法,因为当我用一个空列表测试它时,没有错误,但是我认为我不能这样做:Mult.ListEngEmail,因为在我试图加载我的PultLeVIEW的这个部分视图中没有模型……所以我想知道我怎么能把一个列表发送到我的PAR?tial视图,根据您的第二个建议,其中方法必须是静态的。我收到一个错误,我在编辑我的问题时解释了这个错误。请尝试将视图重新定位到“~/Views/Shared/”中,并使用“\u UnReadEmails”作为RenderPartial的第一个参数(同时考虑从部分名称和第一个参数中删除初始下划线)
ViewBag.lstUnreadEmail‌s = E‌​mailController.Get‌‌​​Un‌​readEmailsByUserId(U‌​ser.Id);
{@Html.RenderPartial("~/Views/Emails/_UnReadEmails.cshtml",ViewBag.lstUnreadEmail‌​s)}