Frage

Ich und ein Kollege diskutieren, wie wir einen Link auf einer Seite erzeugen würden. Sollten wir HTML-Helfer oder halten sehr einfache Ansicht Logik in der Ansicht?

Für dieses Projekt sind wir mit Schloss Einschienen und die NVelocity Ansicht Motor. Ich wäre dankbar für jeden, der unter beide Optionen hält, und gibt ihre Meinungen.

In dieser Geschichte wird der Link zur Zeit nur auf einer einzigen Seite verwendet wird.

Option 1 - Mit Helper

Helper-Code

 var action = snail.IsActive ? "ConfirmDeactivate" : "ConfirmActivate";
   var routeValues = new Dictionary<string, string>
                      {
                       {"action", action},
                       {"querystring", "id=" + snail.ID}
                      };
   var href = UrlHelper.For(routeValues);

   var link = new XElement("a");
   link.SetAttributeValue("href", href);
   link.SetValue(action.Substring(7));

   return link.ToString();

Und dann in der Ansicht, rufen wir einfach die Helfer etwa so:

<li>$Html.SnailActivationSwitchLink($item)</li>

Option 2 - Alle in der Ansicht

#if($snail.IsActive)
  <a href="$Url.For("%{action='ConfirmDeactivate', querystring='id=$snail.ID'}")">Deactivate</a>
  #else
   <a href="$Url.For("%{action='ConfirmActivate', querystring='id=$snail.ID'}")">Activate</a>
  #end
War es hilfreich?

Lösung

Für mich ziehe ich Option 1. Es ist bequemer, die Logik auf dem Helfer zu tun und eleganter.

Andere Tipps

Ich werde stark darauf hin, / use Option 1 - unabhängig von Anzahl der Ansichten, die Sie entwickeln

  • Machen Sie Ihre Ansicht Dumb. -. Spielt keine Rolle für eine einzelne Ansicht oder 100 Ansichten

Viel Unterstützung für Option 1 dann - Zeit zum Anwalt Spiel Teufel

Einer der Hauptgründe für Konzepte wie DRY Anwendung ist die Anwendung einfacher zu ändern / besser verwaltbar zu machen. Also:

  • Was passiert, wenn der Text im Link später geändert werden muss? Oder ich will anstelle des Textes in dort ein Bild setzen? Muß ich wirklich will, um die Anwendung neu zu erstellen einen Tippfehler in einem Link zu entfernen?

  • Noch schlimmer als das, was ist, wenn die Link-Text Bedürfnisse auf verschiedenen Seiten unterschiedlich sein? Füge ich dann für jede Seite eine andere Hilfsmethode?

  • Das ist vorausgesetzt, es mir ist, das ist, um die Änderung zu machen. Was passiert, wenn ich meine Markup Guru bitten, den Link zu einem Bild zu ändern, oder eine Klasse auf das eine Element-Stil bis es hinzufügen? Er ist vollkommen glücklich zu bearbeiten View-Dateien, aber wenn er den Helfer Anruf sieht würde er keine Ahnung, wo die HTML herkam und wo es zu ändern. Auch wenn er die Hilfsklasse gefunden würde er wissen, wie der C # -Code ändern zu tun, was er braucht? er versucht, alles zu tun, ist ein bisschen Text ändern! Warum muss es so schwierig sein?

  • I durch Zugabe von zwei Verfahrensparametern auf dem Helfer einige der oben genannten Probleme lindern könnte, und für jeden Link im Text vorbei, aber was, wenn der Text war ein Image-Tag? Ich habe jetzt HTML bekam, dass ich in meinem Helfer Anruf entkommen müssen - die ziemlich chaotisch aussehen los ist. Ich konnte noch nicht bearbeiten die Attribute des Verbindungselements entweder, sollte ich einen Parameter / Parameter für hinzufügen, dass auch? Wo hört es auf?

Im Grunde werde ich argumentieren, dass ich Option 2 für die meisten Menschen zeigen kann, und sie werden es verstehen und in der Lage, ihn zu ändern. Schöne einfache HTML mit einigen einfachen bedingter Logik zu folgen. Option 1 erhöht die Komplexität und abstration, dass ich nicht brauchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top