Hca*_*tek 11 asp.net-mvc razor asp.net-mvc-3 asp.net-mvc-2
我正在尝试将小型mvc2应用程序转换为mvc3 razor语法.在我的mvc2应用程序中,我使用带有母版页的aspx视图引擎.按照Steven Sanderson的Pro MVC2第2版的例子,在母版页中我调用了一个控制器动作,为每个实体呈现局部视图.这是正常的.
<div id="categories">
<% Html.RenderAction("Menu", "Nav"); %>
</div>
Run Code Online (Sandbox Code Playgroud)
使用_layout.cshtml和razor我正在尝试这个.这是我的问题所在.
<div id="categories">
@{
Html.RenderAction("Menu", "Nav");
}
</div>
Run Code Online (Sandbox Code Playgroud)
这导致了一个无限循环,而且我得到了一个奇怪的StackOverflowException.任何人都可以帮我纠正这个问题吗?这是控制器方法代码.
public ViewResult Menu(string personId)
{
Func<string, NavLink> makeLink = pId => new NavLink
{
Text = pId ?? "Home"
, RouteValues = new RouteValueDictionary(new { controller = "Person", action = "Person"})
};
List<NavLink> navLinks = new List<NavLink> {makeLink(null)};
Func<Person, NavLink> makeLink2 = p => new NavLink
{
Text = p.Name ?? "Home"
, RouteValues = new RouteValueDictionary(new { controller = "Person", action = "Person", personId = p.Id })
};
var people = usersRepository.People.OrderBy(x => x.Name);
var peopleLinks = EnumerableHelpers.MakeLinks(people, makeLink2);
navLinks.AddRange(peopleLinks);
return View("_menu", navLinks);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或提示是最受欢迎的.
谢谢,
〜在圣地亚哥
mar*_*ind 23
您没有发布实际的堆栈跟踪,但是从描述中我猜测您的递归是在运行布局页面的"部分"操作视图中,该视图呈现了呈现布局的操作等.
尝试PartialView从您的子操作方法返回a 而不是View.这将阻止执行_ViewStart页面,这将阻止为您的子操作呈现布局.有关这方面的更多讨论,请访问:http://forums.asp.net/t/1624687.aspx
| 归档时间: |
|
| 查看次数: |
5113 次 |
| 最近记录: |