mvc5 razor将参数发送到控制器

时间:2014-10-27 19:41:09

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

我想根据视图中的用户选择将参数发送回控制器。

这就是我在视图中所拥有的:

@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

1 个答案:

答案 0 :(得分:2)

您当前使用的new object { }是您提供路线数据的地方。您将其添加为HTML属性。

在你的情况下,它应该是这样的:

@Html.ActionLink(c.ToString(),
    "Home", 
    new { letter = c }, 
    new { @class = "alphabet" })