2016-03-29 18 views
0

说我有这样开始的表:点击动作链接后,我该如何引用它的linkText?

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

它让我为那个特定项目的看法。一旦我在单独的.cshtml文件中,我怎样才能引用回到此ActionLink中出现的原始“item.Name”字符串?

*解决方案编辑*

该解决方案最终看上去像这样。

的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的对象。它将会有.Name属性被用作ActionLink的参数。

但是如果你只需要正是你在ActionLink作为第一个参数相同的字符串,可以是你应该重复它的路线值的任何字符串。您的Things操作不仅应接受someId参数,还应接受此字符串。之后,您应该通过ModelViewBag/ViewDictionary将此字符串传递给您的视图。

+0

谢谢。我最终选择了ViewBag方法。之前找到我的部分并未将其包含在Things操作中。 –

2

可以与该项目的名称添加一个额外的参数

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

对于这种方法,您需要修改控制器和模型。

+0

我想,不是你的模型,但只有控制器才能收到新的参数。一旦你有,你可以通过ViewData传递给下一个视图 –

+0

这就是个人:-),我喜欢的东西在我的ViewModel,如果它可以添加 – iBoonZ

+0

谢谢。我希望我可以将两个答案都标记为正确,因为我最终这样做了,但另一个答案有助于解决额外的问题。 –