在ASP.NET webforms中,我曾经编写过AJAX应用程序,客户端可以使用Web服务或页面方法和JSON与服务器进行通信。
我是ASP.NET MVC的新手,发现可以使用使用JSON的Web服务或控制器操作。还有其他选择吗?我应该使用Web服务或控制器操作吗?为什么?
答案 0 :(得分:1)
大多数MVC应用程序使用控制器操作进行Ajax操作。
我认为“为什么”是你在利用你的技能和MVC基础设施。您在应用程序中执行的所有操作都遵循MVC模型,为什么不将Ajax放入其中呢?这只是一种非常自然的模式。
在服务器上,我经常发现自己忘记了一个动作是否被调用了Ajax。我认为这是一件非常好的事情。调用操作的方法与操作的作用是一个单独的问题。当您使用渐进增强(启用Javascript的Ajax,非js的http post)时,尤其如此。然后模式看起来像下面。我真的很喜欢我可以忘记沟通机制并专注于我的应用程序应该做的事情。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MyProgressiveEnhancedAction(FormCollection form)
{
// Handle Html Post
if (!Request.IsAjaxRequest())
return ActionViaHtmlPost();
// Ajax Invocation
...
当我使用这种模式时,我经常发现我有一点点胶水来抽象Ajax vs. Post,其余的(模型,域名交互等)很常见。