asp.net MVC4从另一个视图中的视图访问变量(ActionLink)

时间:2013-12-22 09:11:38

标签: c# asp.net-mvc-4 view actionlink

我的林业管理应用存在以下问题:

Index.cshtml:

@model IEnumerable<ForestryManagement.Models.Forestry>

 @foreach (var forestry in Model)
    {
        <li>@Html.ActionLink(forestry.Name, "Index12", new {tree = forestry.ForestryID})


    }

当您点击一个林业(ActionLink)时,您将被重定向到Index12,其中列出了这些林业的树木

Index12.cshtml:

@model IEnumerable<ForestryManagement.Models.Tree>

@foreach (var item in Model) {
    <tr>


        <td>
            @Html.DisplayFor(modelItem => item.treeName)

        </td>
        </tr>

@Html.ActionLink("Create new Tree", "Create", new { id = **??????**}) //need ForestyID from Index.cshtml here

现在,当我在这个林业中创建另一棵树时,我需要在我的Index12.cshtml页面上获取林业中的ID以获取ActioLink

1 个答案:

答案 0 :(得分:0)

为树列表创建一个视图模型,如下所示:

public class TreeListingViewModel
{
    public int ForestryId { get; set; }

    public IEnumerable<TreeViewModel> Trees { get; set; }
}

注意:首选创建TreeViewModel而不是仅仅使用Tree数据实体来减少视图与数据模型之间的依赖关系(并且还可以提高安全性,因为人们可以轻松地将属性注入到您的数据库,如果您将数据实体直接暴露给您的视图)。

将其传递给您的视图:

@model TreeListingViewModel

...

@Html.ActionLink("Create new Tree", "Create", new { id = Model.ForestryId })