2009-12-30 2 views
0

Я создаю веб-приложение ASP.NET MVC и хотел бы использовать YUI TabView (потому что мне обычно нравится его внешний вид по умолчанию, и я использую пару других вещей YUI, поэтому дополнительные накладные расходы будут сравнительно небольшими), чтобы визуализируйте набор вкладок на главной странице. Вот что я хочу:Каков наилучший способ использования YUI TabView в приложении ASP.NET MVC?

  • Каждая вкладка должна отображать результат действия конкретного контроллера.
  • Каждое из этих действий контроллера отображает некоторый HTML и связанный javascript.
  • В конце концов, для управления будет какое-то состояние приложения, но я игнорирую то, что на данный момент просто посмотрю на вкладку.

Каков наилучший способ для этого?

YUI TabView examples предполагает, что содержимое каждой вкладки находится в собственном div.

<div id="demo" class="yui-navset"> 
    <ul class="yui-nav"> 
     <li><a href="#tab1"><em>Tab One Label</em></a></li> 
     <li class="selected"><a href="#tab2"><em>Tab Two Label</em></a></li> 
     <li><a href="#tab3"><em>Tab Three Label</em></a></li> 
    </ul>    
    <div class="yui-content"> 
     <div id="tab1"><p>Tab One Content</p></div> 
     <div id="tab2"><p>Tab Two Content</p></div> 
     <div id="tab3"><p>Tab Three Content</p></div> 
    </div> 
</div> 

Я не хочу, чтобы это сделать, так как я не хочу, чтобы загрузить все содержимое для всех вкладок сразу. Я думаю, что мне бы хотелось поймать события, которые позволят мне увидеть вкладку, которая активируется, а затем перенаправить на соответствующее действие. Похоже, атрибут Вкладка „DATASRC“ мог бы мне помочь, поэтому я создал тест, основанный на их dynamic example:

tabView.addTab(new YAHOO.widget.Tab({ 
    label: 'One', 
    dataSrc: '/Home/Action1', 
    cacheData: true, 
    active: true 
})); 

tabView.addTab(new YAHOO.widget.Tab({ 
    label: 'Two', 
    dataSrc: '/Home/Action2', 
    cacheData: true 
})); 

tabView.appendTo('container'); 

Это, кажется, работает достаточно хорошо в получении действий, но один артефакт это что любой Javascript, что излучается мое действие не кажется, получить оценку правильно ... то есть, такого рода вещи не показывать мое окно предупреждения:

public ActionResult Action2() 
{ 
    return Content("<script type='text/javascript'>alert('test');</script>"); 
} 

мои конкретные вопросы:

  1. Должен ли я отказаться от TabView от YUI, потому что это не лучший выбор для этого?
  2. Должен ли я просто поймать событие TabView onBeforeTabChange и просто перенаправить на представление, которое затем повторно отображает главную страницу (и, таким образом, TabView), в основном, неаксируя TabView?
  3. Есть ли способ, которым я могу использовать TabView от YUI и сохранять поведение ajax при правильном запуске кода сценария моих действий?

ответ

0

Ваш контент будет помещен на страницу в соответствующем месте. Время его исполнения прошло успешно. Вам нужно что-то вроде функции обратного вызова jQuery, которая выполнит выбранный вами скрипт после завершения действия AJAX. Чтобы ваше предупреждение появилось, вам нужно отправить его с исходным запросом страницы.

+0

Спасибо ... это кажется разумным, но есть ли дополнительные усилия, чтобы, на ваш взгляд, получить скрипты, чтобы оценить, стоит ли проблем? –

Смежные вопросы