按钮单击事件不将输入字符串传递给MVC控制器方法

时间:2014-11-24 14:47:06

标签: javascript asp.net-mvc

我有以下视图HTML

<input id="txt" type="text">
<button class="btn btn-primary" id="button">Upload</button>

和脚本

<script type="text/javascript">
    $("#button").click(function () {
        var txtVal = $("#txt").val();
        window.location = "@Url.Action("Upload", "Tools")" + "/" + txtVal;
    });
</script>

我的控制器方法是

[AllowAnonymous]
public async Task<ActionResult> Upload(string fileName)
{
    string path = @"C:\GambitTests\blue-g-logo.jpg";
    // Do stuff.
    return RedirectToAction("Index", "Tools");
}

此方法触发,但我没有从输入框中获取文本,fileNamenull

我在这里做错了怎样才能将输入控件中的文本传递给此方法?

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

在查询字符串中传递参数的默认语法是?paramName = value,因此在您的情况下,您需要将JavaScript更改为:

window.location = "@Url.Action("Upload", "Tools")" + "?fileName=" + txtVal;

或者,将参数名称更改为id,它将按预期工作(由默认的RouteConfig提供)。