Frage

Ich habe in ein ungeradees Problem mit der Action Methode in ASP.NET MVC Beta läuft. Wenn die Lambda Überlastung von den MVC-Futures kann ich nicht einen Parameter aus Viewdata gezogen zu geben scheinen.

Wenn ich versuche, dies:

<%= Html.ActionLink<PhotoController>(p => p.Upload(((string)ViewData["groupName"])), "upload new photo") %>

Der HTML-Code enthält einen Link mit einer leeren URL.

    <a href="">upload new photo</a>

Allerdings, wenn ich hart Code der Parameter, wie folgt aus:

<%= Html.ActionLink<PhotoController>(p => p.Upload("groupA"), "upload new photo") %>

Die Ausgabe enthält eine tatsächliche URL.

    <a href="/group/groupA/Photo/Upload">upload new photo</a>

Ich nehme an, das wahrscheinlich etwas mit der Sichtbarkeit und Verfügbarkeit des Bildschirmtextsystemes zu tun, und es nicht dort zu sein, wenn das Lambda durch die Interna des Rahmens ausgewertet wird. Aber das ist nur eine Vermutung.

Mache ich etwas falsch in der ersten Probe, dies zu bewirken, oder ist dies eine kurze von Bug?

Aktualisieren : Ich habe die neueste Version des MVC-Futures verwenden. Es wurde darauf hingewiesen, dass dies für einige Menschen funktioniert. Da es nicht für mich arbeiten macht dies denke ich, dass es etwas Bestimmtes ist, was ich tue. Hat jemand irgendwelche Vorschläge für das, was am nächsten suchen, weil dies eine wirklich hat mich ratlos.

War es hilfreich?

Lösung 2

Ok, ich herausgefunden, was mein Problem war.

Anscheinend war ich nicht einmal die Viewdata Slot Einstellung, die ich von der Ansicht zu lesen versuche, was es ein Null-Wert zu sein.

So wirksam wurde ich mit dem Schreiben:

<%= Html.ActionLink<PhotoController>(p => p.Upload(null), "upload new photo") %>

Ich denke, die ultimative Kicker zu dieser ganzen Sache war die Tatsache, dass der Parameter (Gruppenname) einen nicht-ausfall Wert in meiner Routing-Tabelle darstellt.

routes.MapRoute(
    "Group",  
    "group/{groupname}/{controller}/{action}/{id}",
    new {controller = "Photos", action = "View", Id = ""});

So entsprechend die Routing-Regel hat die Eigenschaft Gruppenname vorhanden ist, sein, sondern nach gehen wurde das Lambda gropname weggelassen (null). Dies resultierte in dem MVC-Framework nicht in der Lage, eine Route zu finden, die meine Abfrage zufrieden, und nur null zurück.

Andere Tipps

Haben Sie eine neuere Version des Microsoft.Web.Mvc.dll aktualisiert, wo die stark typisierte Actionlink befindet.

Anscheinend dll wurde für die Beta-Version aktualisiert. Die Funktion wurde möglicherweise leicht modifiziert.

ich das gerade versucht,

<%= Html.ActionLink<HomeController>(x=>x.Search((string)ViewData["search"]), "search?") %>

und es funktionierte gut.

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