2015-06-11 3 views
1

Я испанский, поэтому мой английский плохой. Надеюсь, мое следующее объяснение будет ясным.ASP.NET MVC - изменение вкладок AJAX RenderAction

В этот момент у меня есть этот код:

<div id="tabs-1"> 
    <div id="table-ser1"> 
     @{Html.RenderAction("Name", "Name2", new {ser ="ser1", s1 = s1, s2 = s2});} 
    </div> 
</div> 

<div id="tabs-2"> 
    <div id="table-ser2"> 
     @{Html.RenderAction("Name", "Name2", new {ser ="ser2", s1 = s1, s2 = s2});} 
    </div> 
</div> 

Дело в том, что в этот момент, когда страница загружена, аль содержимое загружается и страница очень медленно. Как я могу изменить это с помощью AJAX? Я хочу, чтобы при загрузке страницы было загружено только содержимое первой загруженной вкладки, а при нажатии второй вкладки она загружает содержимое этой вкладки.

Финнально, если я вернусь на первую вкладку, ее необходимо загрузить из-за первого раза, и она не должна загружать ее снова.

Спасибо!

+0

Ну, это вполне возможно, если вы дать более подробную информацию. Вы используете вкладки jquery-ui или некоторые другие? и что такое 's1 = s1',' s2 = s2' –

+1

@GuruprasadRao 's1 = s1' являются параметрами действия mvc. Обычно указывается значение имени параметра +, даже если оно может быть опущено, если имя соответствует переменной переменной name {new {ser = "ser1", s1, s2} ' –

+0

Здравствуйте! Я думаю, что я использую JQuery-UI, но как я могу это гарантировать? Эта страница была сделана, и я сейчас работаю над ней .. и все для меня ново! –

ответ

0

jquery ui tabs имеет возможность для этого из коробки (см. Ссылку).

Однако были некоторые проблемы с загрузкой ajax и быстрый просмотр вышеуказанной ссылки, показывает, что все еще есть некоторые проблемы (например, он показал вкладку 4, когда я нажал tab1, затем 3 быстро и 3 (ajax один) всегда перезагружается).

Я рекомендую вам посмотреть на beforeActivate события (или аналогичный)

Установите каждую вкладку, так что он знает, если он загружен или нет, и загрузить, когда он включен.

Используйте простой $.ajax вызов или $("#div").load(...), чтобы получить содержание, например:

$("#table-ser2").load("@Url.Action("Name", "Name", ... "); 
Смежные вопросы