Laden...

Asp.net MVC3: Dynamische Verwendung von Links

Erstellt von Campy vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.770 Views
C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 12 Jahren
Asp.net MVC3: Dynamische Verwendung von Links

Hallo zusammen,

ich entwickle eine sehr kleine WEB ASP.NET MVC2 Anwendung und möchte HTML-Actionlinks je nach Anmeldestatus eines Benutzer ausgrauen oder aktivieren.

<li><%: Html.ActionLink("Test", "Create", "Test", new { Disabled = LoggedOnUser.LoggedIn })%></li>

Beim normalen aufrufen der Seite wird der Actionlink nun ordnungsgemäß ausgegraut, nach dem Anmelden wird auch das Property "LoggedIn" nochmal "abgefragt" (Hat jetzt auch den richtigen Status), jedoch bleibt der ActionLink ausgegraut.

Wie kann ich das ändern (ViewState evtl?)
Danke für Eure Hilfe!

Hinweis von Abt vor 12 Jahren

Bitte wähl in Zukunft einen aussagekräftigen Titel

A programmer is just a tool, which converts coffeine into code! 🙂

G
497 Beiträge seit 2006
vor 12 Jahren

äh, Anchor unterstützt doch eigentlich gar kein "Disabled" (zumindest laut selfhtml nicht). Sicher, dass der Link nicht einfach nur ausgegraut ist, weil der Browser das Ziel schon kennt?

G
538 Beiträge seit 2008
vor 12 Jahren

du könntest folgendes tun:

<% if(LoggendOnUser.LoggedIn) { %>
<li><%: Html.ActionLink(...) %></li>
<% } else { %>
<li><span class="disabled">Anmelden</span></li>
<% } %>

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

16.842 Beiträge seit 2008
vor 12 Jahren

Hallo,

prinzipiell hast Du über die Standard-Funktionen von MVC die Möglichkeit in allen Views und Actions das Flag User.Identity.IsAuthenticated abzufragen. Wenn Du ein eigenes Loginsystem verwendest ( was ich jedem abrate ) dann funktioniert das natürlich nicht.

Kann der Actionlink mit dem Disabled überhaupt was anfangen?
Ansonsten schau mal Schritt für Schritt welchen Status das Flag hat und was wirklich an der View ankommt.

Hinweis: Man "sollte" Links nicht nach dem Status des Anwenders generieren, sondern an der jeweiligen Seite eine Authentifizierung anbieten.

Zudem rate ich von der Verwendung von ActionLinks ab, da diese unheimlich unperformant sind. Verwendet lieber direkt HMLT und fülle das href-Attribute mit Url.Action() oder Url.Route()

Gruß

C
Campy Themenstarter:in
439 Beiträge seit 2008
vor 12 Jahren

Hallo Grumbler85, so hat es nun funktioniert, vielen Dank!
Es handelt sich hierbei nur um eine kleine Übersichtswebseite für ein größeres Programm von mir.

Vielen Dank!

Hinweis von Abt vor 12 Jahren

Bitte keine Full-Quotes ([Hinweis] Wie poste ich richtig? 2.3)

A programmer is just a tool, which converts coffeine into code! 🙂