c# - 使用 jQuery 发送部分 View 模型和更新部分 View 存在问题

标签 c# jquery asp.net-mvc-partialview

我在其他 View 模型中使用小模型的部分 View 。因此,我通过从包装器表单中获取模型数据并使用 serializeArray() 来发送它的更改。然后从操作返回 PartialViewResult ,最后通过返回的结果填充部分 View div 容器。这是我的代码:

var modelStr = $("#[wrapperFormName]").serializeArray();
$.ajax({
type: "POST",
url: targetUrl,
cache: false,
data: modelStr,
success: function (sucResult) {
$('#pa_Cnt').html(sucResult);
},
fail: function (result) {
alert("Fail");
}
});

并在 View 中渲染部分 View ,如下所示:

@using (Html.BeginForm("[ActionName]", "[CtrlName]", FormMethod.Post, new { id = "[wrapperFormName]", @enctype = "multipart/form-data" }))
{
    <div id="[partialcontainerName]">
        @Html.Partial("[partialViewName]", [partialViewModelName])
    </div>
}

问题之一是更新部分 View 并返回结果后,任何绑定(bind)到部分内部元素的 jQuery 事件处理程序都不起作用,我知道事件处理程序必须在主视图中声明,而不是在部分 View 中声明,并且必须委托(delegate)处理程序。 第二个问题是更新结果具有新值,但部分 View 中的某些元素显示旧值,并且我使用 [OutputCache(Duration = 0)] 将 ajax 缓存设置为 false 作为操作缓存。 我很困惑。谁能帮帮我。

最佳答案

您的第一个问题是因为您必须重新添加事件处理程序。我假设您正在 $(document).ready 中添加事件处理程序或页面加载时的等效内容。使用 $.ajax 刷新部分后,具有事件处理程序的原始元素不再存在 - 它们的实例已被替换,因此事件处理程序不会触发。您需要重新添加事件处理程序作为 success 的一部分行后回调:

$('#pa_Cnt').html(sucResult);

不确定第二个问题..

关于c# - 使用 jQuery 发送部分 View 模型和更新部分 View 存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033242/

相关文章:

c# - 使用 Ajax 不显眼地渲染部分 View

jquery - 如何使用 jQuery 过滤 MVC 部分 View 中的数据

c# - MSSQL DB - 在数据库中建立关系有什么好处?

c# - 如何检查一个 DateTime 是否大于 C# 中的另一个

c# - 需要使用 LINQ 从多维数组中求和

jquery - 中间切换线没有正确消失

javascript - 设置字数限制并在字数限制上调用新类

c# - 反序列化具有可变结构的 XML 文件

javascript - 听取下拉菜单中的值变化?

c# - 如何在MVC 5上实现索引和创建在同一个页面?