ASP.NET MVC 3: Mehrere Html.RenderAction() Problem
Ich bin mit einem problem konfrontiert, mit ASP.NET MVC 3 mit Razor-rendering-engine (C#). Ich bin mit mehreren Html.RenderAction()
Methoden innerhalb einer Sicht-und nur das layout dargestellt wird.
Ein wichtiger Hinweis, bevor Sie fortfahren: ich kann nicht kopieren Sie den code weil ich nicht über das geistige Eigentum Rechte zu tun. 🙁
Jedenfalls habe ich bemerkt, dass wenn ich verwendet die folgende syntax @{ RenderSection("SectionName", true); }
statt @RenderSection("SectionName", true)
gab es eine generische Ausnahme, dass Sie einfach sagt, dass es unmöglich ist, die Abschnitte mit einem stack-trace, die schien zu sagen, dass es möglicherweise einige asynchrone problem. Zwischen, ich bin mit synchron-Controller, so ist dies vielleicht eine führen, aber ich weiß nicht viel über synchrone/asynchrone Steuerungen und Wann sollte man Sie für bestimmte Situationen.
Alles im Rahmen, hier ist, was ich versuche zu tun, im code/Pseudocode/Website-Struktur...
~/View/Shared/_ViewStart.cshtml
(Selects a layout according to certain conditions.)
~/View/Shared/_Layout1.cshtml
<! doctype HTML>
<html>
<head>
<!-- some irrelevant content here... -->
</head>
<body>
<div id="page">
<div id="header">
@RenderSection("Header", true)
</div>
<div id="content">
<div id="main1">
@RenderSection("Table1", true)
@RenderSection("Table2", true)
</div>
<div id="main2">
@RenderSection("Content", true)
</div>
</div>
<div id ="footer">
@RenderSection("Footer", true)
</div>
</div>
</body>
</html>
~/View/Shared/_Layout2.cshtml
(another layout)
~/View/Controller1/Action1.cshtml
@section Header
{
@RenderPage("~/Views/Shared/Sections/Header")
}
@section Footer
{
@RenderPage("~/Views/Shared/Sections/Footer")
}
@section Table1
{
@{ RenderAction("Table1", "Table"); }
}
@section Table2
{
@{ RenderAction("Table2", "Table"); }
}
@section Content
{
@{ RenderAction("Action", "Content"); }
}
~/View/Controller1/Action2.cshtml
(similar to Action1.cshtml)
~/Utilities/ModelManager.cs
public abstract class ModelManager : Controller
{
//Some useful code for controllers here...
}
~/Controller/Controller1.cs
public class Controller1 : ModelManager
{
#region Get Methods
public ViewResult Action1()
{
return View();
}
public ViewResult Action2()
{
return View();
}
#endregion
#region Post Methods
public ViewResult Action1(FormCollection form)
{
return View();
}
public ViewResult Action2(FormCollection form)
{
return View();
}
#endregion
}
~/Controller/Controller2.cs
(another controller similar to Controller1)
~/- Controller/Tabelle.cs
(Only important thing to note is that the actions are returning PartialViewResult.)
~/Controller/Content.cs
(Only important thing to note is that the action is returning PartialViewResult.)
~/Modell/Einheiten.edmx
(Generated with Entity Framework Wizard.)
* Edit *
Den @Html.Action(...)
gearbeitet, aber ich würde wirklich gerne wissen, warum die @Html.RenderAction(...)
hat nicht funktioniert. Alle Vorschläge sind willkommen. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als alternative würde ich vorschlagen, versucht zu wechseln:
Diese Erweiterung Helfer arbeitet ähnlich wie der RenderAction, gibt aber MvcHtmlString, statt zu schreiben direkt an die Ausgabe-Puffer (Response-stream).
Den Html-Code.RenderAction ist eine Methode, die void zurückgibt. So muss ein ";" am Ende. Als für die Ausnahme, möchten Sie vielleicht versuchen, zu Debuggen und zu sehen, was die Variablen sind gesetzt etc, wenn Sie möchten, um mit dem stick-Helfer-Methode.
Hoffentlich das hilft.
Versuchen Sie dies:
Für RenderAction, Sie muss withing eine Stütze wie in der Abbildung bello
Hoffe, dies hilft jemand.