2016-03-29 8 views
0

sagen, dass ich eine Tabelle, die wie folgt beginnt:Nachdem ich auf einen Aktionslink geklickt habe, wie referenziere ich zurück zu seinem linkText?

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.ActionLink(item.Name, "Things", new { someId = item.Id}) 
     </td> 

Und es nimmt mich für diesen speziellen Artikel zur Ansicht. Wie kann ich, sobald ich in dieser separaten .cshtml-Datei bin, auf die ursprüngliche "item.Name" -Zeichenfolge verweisen, die in diesem ActionLink angezeigt wurde?

* SOLUTION EDIT *

Die Lösung endete wie folgt aussehen.

Die Action:

@Html.ActionLink(item.Name, "Things", new { someId = item.Id, someName = item.Name}) 

Die Aktion:

public ActionResult Things(Guid? someId, string someName) 
... 
ViewBag.currentName = someName; 

Die andere Ansicht:

<h2>@ViewBag.currentName</h2> 

Antwort

1

Ich denke, Sie müssen nicht auf die erste ActionLink Argument verweisen. Was Sie interessieren könnte, ist ein Objekt, das für diese Ansicht ein ist. Wenn Sie auf den Link klicken, gelangen Sie zu einer Aktion, bei der Sie das someId - id des aktuellen Modellobjekts übergeben. Dann solltest du wahrscheinlich ein Objekt von seinem id in deinem Speicher finden. Es wird .Name Eigenschaft haben, die als ActionLink Argument verwendet wurde.

Wenn Sie jedoch genau die gleiche Zeichenfolge benötigen, die Sie als erstes Argument in ActionLink verwendet haben, die eine beliebige Zeichenfolge sein kann, sollten Sie sie in den Routenwerten duplizieren. Ihre Things Aktion sollte nicht nur someId Argument sondern auch diese Zeichenfolge akzeptieren. Nachdem Sie diese Zeichenfolge über Model oder ViewBag/ViewDictionary an Ihre Ansicht übergeben haben.

+0

Danke. Ich entschied mich für den ViewBag-Ansatz. Der Teil, der mich früher erreichte, war nicht in der Aktion "Dinge" enthalten. –

2

Sie können einen zusätzlichen Parameter mit dem Namen des Elements hinzufügen

@Html.ActionLink(item.Name, "Things", new { someId = item.Id, name = item.Name}) 

Sie müssen auch Ihren Controller und Ihr Modell für diesen Ansatz ändern.

+0

Ich denke, nicht Ihr Modell, sondern nur der Controller, um den neuen Parameter zu erhalten. Sobald Sie haben, können Sie es über ViewData an die nächste Ansicht übergeben –

+0

Das ist persönlich :-), Ich mag Dinge in meinem ViewModel, wenn es hinzugefügt werden kann – iBoonZ

+0

Vielen Dank. Ich wünschte, ich könnte beide Antworten als richtig markieren, da ich damit endete, aber die andere Antwort half mit zusätzlichen Bedenken. –

Verwandte Themen