gpt4 book ai didi

asp.net-mvc - ASP MVC + AJAX,尝试异步更新 div

转载 作者:行者123 更新时间:2023-12-01 01:31:33 26 4
gpt4 key购买 nike

我是 Asp MVC 的新手,我正在尝试完成一些异步更新(我正在使用带有 Razor 的 MVC3 RC2,但我也可以使用 ASPX 解决方案进行管理)。

我有一个母版页,它通过调用 Html.RenderAction("Cart","Shop") 在每个页面上呈现一个购物车框。 ShopController 的 Cart Action 调用数据库等,并输出结果。这有效。
第一个问题:如果我在这个局部 View 中放置一个 ActionLink(比如 Html.ActionLink("Remove")),那么即使我从 Remove 操作中调用 PartialView(),它也只会呈现购物车,而没有其他内容(本质上,我的页面消失)。
第二个问题:在这个局部 View 中有一个名为“cartContent”的 div。我希望能够在任何地方放置一个链接(不仅仅是在母版页或局部 View 中),按下该链接时会调用 Controller 操作,然后仅根据结果更新 cartContent div。我尝试过 Ajax.ActionLink,但它与 Html.ActionLink 的作用相同,即使我导入了 Microsoft.MvcAjax js 库。
另外,如果我解决了第一个问题,我也希望它是异步的。

我使用什么解决方案?我试过将 UpdateTargetID 设置为“cartContent”,我试过将 cartContent 包装到 Ajax.BeginForm 中,什么也没有。我是否必须使用 jQuery(我对此一无所知)?我是否将一些响应序列化为 JSON,并在 Javascript 中手动更新 div? (我不太擅长 JS,我来自 C# 方面)

最佳答案

你可以在任何你想要的地方放一个链接:

@Html.ActionLink("remove item", "remove", "somecontroller", 
new { id = Model.Id }, new { @class = "remove" })

然后在一个单独的 javascript 文件中:
$(function() {
$('.remove').click(function() {
// when the link is clicked
// perform an ajax request:
$.ajax({
url: this.href,
type: 'delete',
success: function(result) {
// when the AJAX call succeed do something with the result
// for example if the controller action returned a partial
// then you could show this partial in some div
$('#someDivId').html(result);
}
});

// don't forget to cancel the default action by returning false
return false;
});
});

备注:如果您正在更新的 div 也包含链接,那么您可能需要使用 .live() 函数或单击事件处理程序将不会第二次工作,因为 DOM 将被修改:
$('.remove').live('click', function() {  
...
});

关于asp.net-mvc - ASP MVC + AJAX,尝试异步更新 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com