在Html.ActionLink()中创建动态链接文本和链接

时间:2015-10-15 09:10:04

标签: c# asp.net-mvc razor linked-list ienumerable

我想创建`@ Html.ActionLink(model.country,"详细信息","国家")'在下拉列表中作为选项。因为稍后,使用不同的角色访问将看到不同的链接...

控制器

    public ActionResult Index()
    {
        CountryList = db.CountryListTable.Select(x => x.countryName).ToList();
        ViewBag.ctr = CountryList;
        return View();
    }

查看

    @foreach (var item in @ViewBag.ctr)
    {
            <span>@item</span>
            <span>
            @* @Html.ActionLink((string)@item, "Details", "Country"); *@ @* this part throw error due to null *@
            </span>
            <br />
    }

@item不为null ...我不知道为什么在用@html.ActionLink封装时会抛出空值...

fyi,我正在使用.netFramework 4.0和MVC4 ......

我是一个非常新的MVC n .netFramework

2 个答案:

答案 0 :(得分:3)

应该是这样的: Html.ActionLink("Details", "Country", new { country = @item })

或者尝试这样:

<a href="@Url.Action("Details", "Country", new { country = @item })">@item</a>

您将获得null,因为您没有将参数传递给您的操作方法。

答案 1 :(得分:0)

谢谢!第二种方法确实有效!

仅供其他参考,我认为第一个不是因为第一个参数需要是字符串... 它应该是:Html.ActionLink((string)item,&#34; Details&#34;,&#34; Country&#34;,new {country = @item})

但是,我尝试了这个方法,但仍然会抛出相同的错误...此参数为null ...

实际上,我确实通过viewbag传递参数......或者这不是soo叫做#34;传递参数&#34;,我不知道......但是当我把这个@ Html.actionlink更改为@时item,它列出了项目...

感谢Arjit Mukherjee ......你确实给了我很多时间......