2010-12-20 58 views
4


我是新来的Asp MVC,我试图完成一个异步更新(我使用MVC3 RC2,与剃刀,但我可以管理也有ASPX解决方案)。ASP MVC + AJAX,试图更新异步

我有一个母版页,它通过调用Html.RenderAction(“Cart”,“Shop”)在每个页面上呈现购物车框。 ShopController的Cart动作调用数据库等,并输出结果。这工作。
第一个问题:,如果我把一个ActionLink的是,该部分视图(如Html.ActionLink(“删除”)),那么即使我叫PartialView()从删除的动作,它只是呈现在购物车,并没有什么其他(本质上,我的页面消失)。
第二个问题:在这个局部视图中有一个叫做“cartContent”的div。我希望能够在ANYWHERE(不仅在母版页或部分视图中)放置一个链接,当它按下时调用一个控制器Action,然后根据结果更新cartContent div。我已经尝试了Ajax.ActionLink,但它与Html.ActionLink一样,即使我导入了Microsoft.MvcAjax js库。
另外,如果我解决了第一个问题,我希望它也是异步的。

我使用什么解决方案?我已经尝试将UpdateTargetID设置为“cartContent”,我尝试将cartContent包装到Ajax.BeginForm中,没有任何内容。我必须使用jQuery(我什么都不知道)?我是否将一些响应序列化为JSON,并在Javascript中手动更新div? (我不是在JS真是太好了,我是从事物的C#那边传来)

+0

ajax.beginform应该是答案,你是否在默认主布局中启用mvc ajax javascript?我记得它默认是禁用的。 http://davidhayden.com/blog/dave/archive/2009/05/19/ASPNETMVCAjaxBeginForm.aspx也可以帮助 – xandy 2010-12-20 01:00:13

+0

这是我读过的同一页。我的_Layout.cshtml(就像SiteMaster的模板)中有以下几行: TDaver 2010-12-20 07:24:01

回答

4

你把任何你想要的链接:

@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; 
    }); 
}); 

备注:如果要更新的股利也包含链接,那么你可能需要使用.live()功能或单击事件处理程序将无法正常工作,第二次是因为DOM将被修改:

$('.remove').live('click', function() { 
    ... 
}); 
+0

type:'delete'< - 这是什么? (我了解其余的,现在尝试,非常感谢你) – TDaver 2010-12-20 07:48:25

+0

@TDaver,它表示使用DELETE HTTP动词。所以你的控制器动作可以用'[HttpDelete]'装饰。在服务器上删除资源时,使用DELETE动词是一个好主意。它更加RESTful。 – 2010-12-20 07:51:21

+0

哇!有些东西在工作:)当我从工作中回来时,我会试试现场。还有一件事:我必须为每个想要异步刷新的div编写这个JS,还是可以创建一个通用的JS?为什么在MS AJAX库中没有这样的一个?谢谢btw,你只是让我的一天! – TDaver 2010-12-20 07:57:02