我想创建`@ 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
答案 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 ......你确实给了我很多时间......