0

@RenderPage简单地说,我在一个较大的 CSHTML 中呈现的部分 CSHTML 中有两个元素。一个是下拉菜单,一个是href。(请参阅下面的部分 CSHTML。)

当用户从下拉列表中选择不同的名称时,.change()会触发 jquery 方法,该方法将 ( .ajax()) 一个数值发布到页面,如下所示:

@{
    var ajax = Request["picked"];
}

<div id="pt_picker">
    @Html.DropDownList("PTPICKER", ...)
</div>

<div id="switcherlink">
    @{
        @Html.ActionLink("Go", "StartFlow", "Person", new { pid = @ajax, redirectUrl = "InSession" }, null)
    }
</div>

<script type="text/javascript">
    $(document).ready(function () {

        $('#PTPICKER').change(function () {
            $.ajax(
                {
                    url: window.location.pathname,
                    type: 'POST',
                    data: { picked: $("#PTPICKER").val() },
                    success: function (result) { alert("ok"); },
                    error: function (result) { alert("not ok"); }
                }
            );
        });

    });
</script>

使用调试器,数字值被发布,我可以评估它,并且调试器似乎再次使用新值点击 Html.ActionLink 行。但是结果页面仍然显示具有旧值 'pid' 的 href。

有任何想法吗?提前致谢!

4

1 回答 1

1

但是结果页面仍然显示具有旧值 'pid' 的 href。

嗯,那是因为你在成功函数中所做的只是一个警报。您永远不会用来自您的服务器的值替换原始值。从您的问题来看,尚不清楚控制器操作返回的部分是什么,但您应该使用该result变量来替换 DOM 中的相应部分:

success: function (result) { 
    // You need to inject the result coming from your controller action 
    // (and having the updated values) back into the DOM
    $('#some_id').html(result);
},
于 2013-08-06T14:51:38.803 回答