繁体   English   中英

在Ajax中重新加载时,局部调用ASP.NET MVC3 Razor Url.Action会自动附加id

[英]Calling ASP.NET MVC3 Razor Url.Action in partial automatically appends id when reloading in ajax

我有一个包含多个部分节的ASP.NET MVC页面。 这些部分中的每个部分都有一个脚本初始化,并且每个部分都从其自身进行刷新。

<script type="text/javascript">
    $(document).ready(function () {
        var section1Config = {
            AddEditSection1Url: "@Url.Action("AddEditSection1", "Loan")"
        };
    });
</script>

初始加载时,结果如下所示:

<script type="text/javascript">
    $(document).ready(function () {
        var section1Config = {
            AddEditSection1Url: "/Loan/AddEditSection1"
        };
    });
</script>

当我刷新该部分内容时,Url.Action包含我通过AJAX传递的ID,而无需我要求它:

<script type="text/javascript">
    $(document).ready(function () {
        var section1Config = {
            AddEditSection1Url: "/Loan/AddEditSection1/2"
        };
    });
</script>

这是我正在拨打的客户端电话:

$.post('/Loan/AddEditSection1/2', function (data) {
    $('#loanadd-1').html(data);
});

这是该jQuery帖子所调用的服务器端代码:

public PartialViewResult AddEditSection1(int id)
{
    var viewModel = GetPopulatedAddEditViewModel(id);
    return PartialView("Partials/AddEditSection1", viewModel);
}

关于渲染引擎为何如此“有用”的任何线索? 这确实使事情变得不必要地困难。

很多时候,您实际上会发现此行为非常有用,实际上您已经习惯了,请注意,通常您会在不使用控制器名称的情况下调用Url.ActionHtml.Action ,它们都是同一参数提供程序的一部分。

无论如何,在您明确不想包含参数的情况下,只需传入一个对象并将其设置为空即可:

<script type="text/javascript">
$(document).ready(function () {
    var section1Config = {
        AddEditSection1Url: "@Url.Action("AddEditSection1", "Loan", new {id=""})"
    };
});
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM