2

我有一个静态类 ItemInitializer,它有一个 CreateCookie() 方法。每当下拉列表中的选定项目发生更改时,我都想调用此方法。我如何在 mvc 中做到这一点?

目前,我正在尝试这个

在视图中:

    @Html.DropDownListFor(m => m.SelectedItem, Model.MyItemList, new { @id = "ddLForItems"})

在Controller中,方法是这样调用的,

       myModel.SelectedItem = ItemInitializer.CreateCookie();

现在,对于 DropDownListFor 的 onchange 事件,需要再次调用 createCookie 方法。

使用 jquery,如何调用 CreateCookie 方法。我有,

<script type = "text/javascript">
            $(function () {
                $("#ddLForItems").change(function () {
                    var item = $(this).val();
                    ...?

                   //TBD:Create a cookie with value myModel.SelectedItem 

                });
            });

</script>

谢谢

4

1 回答 1

5

您可以使用window.location.href重定向到将调用此方法的应用程序上的控制器操作:

<script type = "text/javascript">
    $(function () {
        $('#ddLForItems').change(function () {
            var item = $(this).val();
            var url = '@Url.Action("SomeAction", "SomeController")?value=' + encodeURIComponent(item);
            window.location.href = url;
        });
    });
</script>

它将重定向到以下控制器操作并将选定的值传递给它:

public ActionResult SomeAction(string value)
{
    ... you could call your method here
}

或者,如果您不想从当前页面重定向,您可以使用 AJAX 调用:

<script type = "text/javascript">
    $(function () {
        $('#ddLForItems').change(function () {
            var item = $(this).val();
            $.ajax({
                url: '@Url.Action("SomeAction", "SomeController")',
                type: 'POST',
                data: { value: item },
                success: function(result) {
                    // the controller action was successfully called 
                    // and it returned some result that you could work with here
                }
            });
        });
    });
</script>
于 2013-07-09T20:13:10.087 回答