使用jQuery调用MVC中的action方法,参数不起作用

And*_*ers 4 asp.net jquery asp.net-mvc-2

我正在尝试使用jQuery在MVC应用程序中调用一个action方法.基本上我想要的是获取几个输入字段的值,并通过单击按钮调用操作方法,将输入字段的值作为参数传递.但我只得到"数字"参数的值,而不是"年"参数.

    function selectWeek() {
        $('#selectWeekButton').click(function (event) {
            var number = $("#selectWeekId").val();
            var year = $("#selectYearId").val();
            var actionUrl = '<%: Url.Action("Edit", new { number="WEEKPLACEHOLDER", year="YEARPLACEHOLDER" }) %>'

            var yearUrl = actionUrl.replace('YEARPLACEHOLDER', year);

            var url = yearUrl.replace('WEEKPLACEHOLDER', number);
            alert(url);
            $.get(url, function (data) {
                alert('Test');
            });
        });
    }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我用警报检查了网址,并且它似乎包含两个值都很好.但是当我在action方法中检查year参数的值时,它为null.

以下是输入字段:

<span>Vecka: </span>
        <input type="text" id="selectWeekId" />
        <span>År: </span>
        <input type="text" id="selectYearId" />
        <input type="button" value="Välj vecka" id="selectWeekButton" />
Run Code Online (Sandbox Code Playgroud)

并且动作方法的开头:

public ActionResult Edit(string number, string year) 
//etc...
Run Code Online (Sandbox Code Playgroud)

我知道这看起来很奇怪,而不仅仅是绑定字段,但原因是这些输入字段及其值不是此View的主要目的.他们只是在这个时间表应用程序中选择另一周.此外,我最终将用jQuery日历替换输入字段,所以我仍然必须做这样的事情.

那么最简单的方法是什么,为什么它不能正常工作呢?

rcr*_*ens 6

我通常使用$ .get方法的jQuery第二个参数来输入URL参数.这是一篇文章(asp.net mvc 1,但仍然是一个有效的例子):

http://blog.bobcravens.com/2009/11/ajax-calls-to-asp-net-mvc-action-methods-using-jquery/


Dar*_*rov 6

试试这样:

var number = $('#selectWeekId').val();
var year = $('#selectYearId').val();
var url = '<%: Url.Action("Edit") %>';
$.get(url, { number: number, year: year }, function (data) {
    alert('Test');
});
Run Code Online (Sandbox Code Playgroud)