我想根据视图中的用户选择将参数发送回控制器。
这就是我在视图中所拥有的:
@model IEnumerable<Users>
@{
ViewBag.Title = "FieldSaver Users";
}
<h2>Users</h2>
@foreach(char c in ViewBag.Alphabet)
{
@Html.ActionLink(c.ToString(), "Home/" + c, new object { }, new { @class = "alphabet", @letter = c })
}
<div class="table-responsive">
<table class="table table-striped">
<tr>
<td>Username</td>
<td>First name</td>
<td>Last name</td>
</tr>
@foreach (var user in Model)
{
<tr>
<td>@user.UserName</td>
<td>@user.FirstName</td>
<td>@user.LastName</td>
</tr>
}
</table>
</div>
这是控制器:
public ActionResult Home(string letter)
{
ViewBag.Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
using (var db = new App.Models.DbContext())
{
List<Users> users = (from p in db.Users
select p).ToList();
return View(users);
}
return View();
}
因此,当有人点击字母链接中的字母时,我想将值发送回控制器,目前回发正在发生,但字母参数为空。
知道我做错了什么吗?
谢谢,Laziale
答案 0 :(得分:2)
您当前使用的new object { }
是您提供路线数据的地方。您将其添加为HTML属性。
在你的情况下,它应该是这样的:
@Html.ActionLink(c.ToString(),
"Home",
new { letter = c },
new { @class = "alphabet" })