在Javascript

时间:2016-03-30 07:17:22

标签: jquery asp.net-mvc

我是Javascript的新手。我在以下场景中需要帮助:

我的视图中有2个下拉列表,还有一个Anchor(a)元素。单击此锚元素,我想重定向到另一个视图(基本上必须调用另一个动作函数),但我需要传递在这2个下拉列表中选择的当前值。简而言之,我需要调用另一个动作函数并传递下拉中选择的2个当前值。

我编写了以下Ajax代码,但总是会出现错误部分:

$.ajax({
    type: 'GET',
    url: Url.Action("ActionMethod", "MyController"),
    data: {
        param1: DD1Value,
        param2: DD2Value,
        param3: xyz
    },
    success: function (data) {
        window.location.href = data.redirecturl;
    },
    error: function () {
        alert('error happened');
    }
}); 

控制器:

[HttpGet]
public ActionResult ActionMethod(DateTime param1, DateTime param2, string param3)
{
//Do some work
//Return View
}

编辑: 我明白Ajax的重点在于保持同一页面。我也试过使用window.location.href,:

window.location.href = "/MyController/ActionMethod?param1=" + DD1Value+ "&param2=" + DD2Value+ "&param3=" + "xyz"

但是这会导致路由错误。无法更改Route.config以适应此目的。

1 个答案:

答案 0 :(得分:0)

您可以使用下面显示的Ajax调用将DropDownList值传递给Controller bu:

<script>
    $(document).ready(function () {

        $(".SelectedCustomer").change(function (event) {
            $.ajax({
                url: '@Url.Action("ActionMethod", "MyController")',
                data: { 
                          param1: $('#DD1').val(),
                          param2: $('#DD2').val(),
                          param3: xyz
                          /* add other additional parameters */ },
                cache: false,
                type: "POST",
                dataType: "html",
                success: function (data, textStatus, XMLHttpRequest) {
                    SetData(data);
                },
                error: function (data) { onError(data); }
            });
        });

    });

</script> 

希望这会有所帮助......