/ / Wie verwende ich eine YUI-TabView in einer ASP.NET-MVC-App am besten? - Javascript, asp.net-mvc, yui

Was ist der beste Weg, um eine YUI-TabView in einer ASP.NET MVC-App zu verwenden? - Javascript, asp.net-mvc, yui

Ich erstelle einen ASP.NET MVC Web App und möchte das YUI TabView verwenden (weil ich im Allgemeinen das Standard-Aussehen mag und ein paar andere YUI-Dinge verwende, damit der zusätzliche Aufwand vergleichsweise gering ist), um eine Reihe von Registerkarten auf der Masterseite zu rendern Hier ist was ich will:

  • Jede Registerkarte sollte das Ergebnis einer bestimmten Controller-Aktion darstellen.
  • Bei jeder dieser Controller-Aktionen werden HTML-Code und zugehöriges Javascript gerendert.
  • Irgendwann wird es einen gewissen Anwendungsstatus geben, den ich jedoch ignoriere, um nur die Registerkartenansicht zu betrachten.

Was ist der beste Weg, dies zu tun?

Das YUI TabView-Beispiele schlagen vor, dass sich der Inhalt jedes Registers in einem eigenen div befindet.

<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>

Ich will das nicht, weil ich es nicht willLaden Sie den gesamten Inhalt aller Registerkarten auf einmal. Ich würde denken, dass ich Ereignisse abfangen möchte, mit denen ich den aktivierten Tab sehen und dann zu der entsprechenden Aktion umleiten kann. Es sieht so aus, als könnte mir das Attribut "dataSrc" auf der Registerkarte helfen dynamisches Beispiel:

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");

Dies scheint gut genug zu funktionieren, um an das zu gelangenAktionen, aber ein Artefakt davon ist, dass jedes Javascript, das von meiner Aktion ausgegeben wird, nicht richtig ausgewertet zu werden scheint ... d. h., diese Art von Dingen zeigt mein Warnfeld nicht an:

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

Meine konkreten Fragen sind:

  1. Sollte ich das TabView von YUI aufgeben, weil es einfach nicht die beste Wahl dafür ist?
  2. Soll ich nur die TabView "s fangen onBeforeTabChange Ereignis und nur zu einer Ansicht umleiten, die dann die Masterseite (und damit die TabView) neu rendert und die TabView im Grunde genommen entspannt?
  3. Gibt es eine Möglichkeit, YUIs TabView zu verwenden und das Ajax-Verhalten beizubehalten, während der Skriptcode für meine Aktionen ordnungsgemäß ausgeführt wird?

Antworten:

0 für die Antwort № 1

Ihr Inhalt wird in die Seite eingefügtan der entsprechenden Stelle. Die Zeit für seine Ausführung ist lange vergangen. Sie benötigen so etwas wie die Rückruffunktion von jQuery, mit der Sie nach Abschluss der AJAX-Aktion ein Skript Ihrer Wahl ausführen können. Damit eine Warnung angezeigt wird, müssen Sie sie mit der ursprünglichen Seitenanforderung senden.