2016-03-29 9 views
0

は、私はこのように始まるテーブルを持っていると言います。その別の.cshtmlファイルに入ったら、このActionLinkに表示された元の "item.Name"文字列をどのように参照できますか?アクションリンクをクリックした後、そのリンクテキストをどのように参照するのですか?</p> <pre><code>@foreach (var item in Model) { <tr> <td> @Html.ActionLink(item.Name, "Things", new { someId = item.Id}) </td> </code></pre> <p>そして、それはその特定の項目のビューに私を取る:

* SOLUTIONのEDIT *

ソリューションは、このように見てしまいました。

ActionLinkの:

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

処置:

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

他のビュー:

<h2>@ViewBag.currentName</h2> 

答えて

1

私は最初にActionLink引数を参照する必要はないと思います。興味深いのは、このビューにはModelというオブジェクトです。リンクをクリックすると、現在のモデルオブジェクトのsomeId - idを渡すアクションに移動します。おそらく、あなたのストレージにはidというオブジェクトがあるはずです。 ActionLink引数として使用された.Nameプロパティがあります。

しかし、ActionLinkの最初の引数として使用したものとまったく同じ文字列が必要な場合は、それを任意の文字列にすることができます。ルート値に複製する必要があります。 Thingsアクションは、someId引数だけでなく、この文字列も受け入れる必要があります。この文字列をModelまたはViewBag/ViewDictionary経由で渡す必要があります。

+0

ありがとうございます。私はViewBagのアプローチに行きました。私を早くにしていた部分は、物事の行為にそれを含めていませんでした。 –

2

は商品

の名前で追加のパラメータを追加することができます
@Html.ActionLink(item.Name, "Things", new { someId = item.Id, name = item.Name}) 

この方法では、コントローラとモデルも変更する必要があります。

+0

あなたのモデルではなく、コントローラーだけが新しいパラメーターを受け取ると思います。いったん持っていれば、ViewData経由で次のビューに渡すことができます –

+0

それは個人的なものです:-)、私はViewModelに追加することができるものが好きです。 – iBoonZ

+0

ありがとう。私は、私がこれをやってしまったように、両方の答えを正しいものとしてマークすることができればと思いますが、もう1つの答えは、さらなる懸念を助けました。 –

関連する問題

 関連する問題