2012-04-03 13 views
0

Ich habe eine Seite (a.aspx) auf, die von zwei verschiedenen Seiten im, Navigation (dh es eine Verbindung in diesen beiden Seiten ist, wo es a.aspx navigiert) vonAlternative für Viewdata und Abfrage-Zeichenfolge

zu unterscheiden auf welcher Seite ich zu a.aspx navigiert wurde, habe ich den folgenden Code verwendet.

bestanden Querystrings (B1, B2) auf die Zielseite, wie unten

Html.ActionLink("test" "Testing", new { Controller = "Stats",prev="B1"},new { @class = "link",target="_self" }) 
Html.ActionLink("test" "Testing", new { Controller = "Stats",prev="B2"},new { @class = "link",target="_self" }) 

und in der Wirkung der Zielseite Controller verwenden ich den folgenden Code

ViewData["prev"] = Request.QueryString["prev"].ToString(); 

und im dieses Bildschirmtextsystem unter Verwendung von in der Zielseite dh a.aspx.This funktioniert gut .. Im abit zögern, Query.string und ViewData für die oben genannte Anforderung zu verwenden.Bitte schlagen Sie einen anderen alternativen Ansatz für die gleiche.

Antwort

0

Sie diese verwenden können,

den Namen des Controllers Get

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue 

Holen Sie sich den Namen der Aktion

@ViewContext.Controller.ValueProvider.GetValue("action").RawValue 

ich, dass here gefunden.

0

Warum navigieren Sie nicht zu zwei separaten Aktionen, die dieselbe Ansicht zurückgeben? Übergeben Sie dann ein Modell an die Ansicht, die die "Von" -Seite anzeigt. Sie werden wissen, von welcher Seite Sie kamen, aufgrund welcher Aktion getroffen wird. Es ist sauberer, weit weniger kompliziert und leichter zu warten, als zu versuchen, solche Dinge in einer Querystring, Viewdata, Viewbag, usw. zu passieren. Das heißt, wenn Sie eine Menge von dieser Art von Sache machen müssen, erstellen Sie getrennt Aktionen jedes Mal ist nicht real