如何在actionlink中获取文本框的值?

时间:2016-07-05 19:57:45

标签: c# asp.net-mvc

我想通过我的@HtmlTextBox("UserName")从我的视图中将@html.ActionLink的值传递给我的控制器中的get方法。这是我尝试过的:

@Html.TextBox("UserName")
@foreach (string s in ViewBag.RolesForThisUser)
{
    <tr>
        <td>
            @s
        </td>
        <td>
            @Html.ActionLink("Remove Role", "DeleteRoleForUser",
            new{controller = "Role",
            UserName=@Html.TextBox("UserName").ToString(), RoleName=@s})
        </td>
    </tr>
}

如果这超出范围,似乎有点棘手。这适用于RoleName变量,因为它在范围内。是否无法使用给定的变量获取值?

解决 从Scartag那里得到了一个问题,我想出了这个

$(function () {
    $("#lnk")
        .click(function () {
            console.log("my message");
            var userName = $("#UserName").val();
            this.href = this.href + '&UserName=' + userName;
        });
});

2 个答案:

答案 0 :(得分:1)

你的做法是错误的。

每次看到@Html.TextBox("UserName")标记时,都告诉运行时要创建一个带有id和名称的输入字段&#34;用户名&#34; ...这就是全部。

它不会转化为价值。

然而,您可以使用javascript向onclick添加actionlink,这会在导航到您希望它到达的任何网址之前附加文本框的值。

答案 1 :(得分:0)

一种方法是检查FormCollection您要发布的值

[HttpPost] 
public ActionResult SubmitAction(FormCollection collection)
{
  // Get Post Params Here
  string var1 = collection["UserName"];
}

检查您是否使用正确的ID名称来检索值