Нажатие asp.net mvc Ajax.ActionLink с Insert into RenderBody() вызывает бесконечный цикл

У меня есть эти ActionLinks в моем представлении основного индекса:

<p>@Ajax.ActionLink("Releases", "Index", "Release", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "ContentPanel" })</p>
<p>@Ajax.ActionLink("Templates", "Index", "Template", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "ContentPanel" })</p>
<p>@Ajax.ActionLink("Testplans", "Index", "Testplan", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "ContentPanel" })</p>

ниже это:

<div id="ContentPanel">
    @RenderBody()
</div>

Когда я нажимаю каждую ссылку Release, Templates, Testplans один за другим, переключение представлений работает.

Когда я нажимаю в этом порядке:

Releases
Templates
Releases
Templates

Переключение больше не работает. Кажется, проблема в том, что когда я устанавливаю точку останова в методе индекса моего контроллера:

public ActionResult Index()
{
    return View();
}

Действие Index вызывается в ооооооооооо ??

Почему это?


person Pascal    schedule 18.04.2012    source источник
comment
Проблема, похоже, в @RenderBody(). Мне это не нужно, но я должен использовать его как ограничение asp.net mvc. И в Ajax.ActionLink я должен установить AjaxOptions... поэтому один из них я должен удалить, но тогда функциональность не работает.   -  person Pascal    schedule 18.04.2012
comment
Используете ли вы ссылку на макет в своем представлении? вот так Layout=/Shared/_Layout.cshtml;   -  person AliRıza Adıyahşi    schedule 18.04.2012
comment
да, это определено в моем файле _ViewStart.cshtml.   -  person Pascal    schedule 18.04.2012
comment
Не могли бы вы попробовать этот код Layout = Request.IsAjaxRequest()? null : ~/Views/Shared/_Layout.cshtml;   -  person AliRıza Adıyahşi    schedule 18.04.2012
comment
ДА помогло! кажется глупым обходным путем ;-) Последняя проблема: в моем методе действия MainController Index я возвращаю представление, которое бесполезно, или представление никогда не отображается. Это означает, что метод действия Index является просто бесполезным кодом, потому что мое видимое представление определяется ActionLinks, который позже будет вызываться ActionLink из кода javascript (будет активирован первый ActionLInk...). Но дизайн asp.net mvc работает таким образом, что должен быть начальный вызов действия контроллера... Любое решение?   -  person Pascal    schedule 18.04.2012
comment
@AliRiza поместите свой комментарий в решение / ответ, чтобы я мог пометить его как решенный :) проблема, которая у меня все еще есть, будет для нового вопроса :)   -  person Pascal    schedule 19.04.2012
comment
@AliRiza, если вам интересно ;-) stackoverflow.com/questions/10235554/   -  person Pascal    schedule 19.04.2012


Ответы (1)


Не могли бы вы попробовать этот код:

Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";
person AliRıza Adıyahşi    schedule 19.04.2012