Я столкнулся с проблемой ASP.NET MVC 3 с механизмом рендеринга Razor (C #).Я использую несколько Html.RenderAction()
методов в представлении, и отображается только макет.
Одно важное замечание перед продолжением: я не могу скопировать любой код, потому что у меня нет прав на интеллектуальную собственностьтак.: (
Во всяком случае, я заметил, что если бы я использовал следующий синтаксис @{ RenderSection("SectionName", true); }
вместо @RenderSection("SectionName", true)
, было общее исключение, которое просто говорит о том, что он не смог отрендерить секции с трассировкой стека, которая казаласьскажем, что может быть какая-то асинхронная проблема. Между тем, я использую синхронные контроллеры, так что, возможно, это лидерство, но я не знаю много о синхронных / асинхронных контроллерах и когда их следует использовать для определенных ситуаций.
Чтобы поместить все в контекст, вот что я пытаюсь сделать в коде / псевдокоде / структуре сайта ...
~ / 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 / Table.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.)
~ /Model / Entities.edmx
(Generated with Entity Framework Wizard.)
* Редактировать *
Работает @Html.Action(...)
, но мне бы очень хотелось узнать, почему @Html.RenderAction(...)
не работалЛюбые предложения приветствуются.:)