2009-12-03 78 views
0

任何人都可以帮忙吗?ASP.NET MVC:通过ajax从页面再次进入控制器?

我刚开始asp.net的MVC和它的所有工作..进入我的控制器,然后发送出去的观点......我也写在这里的日志....

的加载页面作为相当多的jQuery和JavaScript,所以我需要能够再次进入控制器,最好不是回发,但通过ajax或类似的 - 这可能吗?

或者我从JavaScript调用一个控制器的动作,我想我的问题应该是 - ???

任何想法?

在此先感谢

回答

1

那么,如果你想要做的阿贾克斯对一个控制器,你可以做与jQuery像这样的阿贾克斯:

$.ajax({ 
       type: "GET",//type of verb to use POST/GET 
       data: ({ Data:data }),//Send some data to the controller 
       url: '<% = Url.Action("MEthod","Controller")%>',//URL of the resource 
       dataType: "text/html", //Define the type of spectated results(JSON,Html,Xml) 
       timeout: 8000, //How much time to wait for the asynchronous call to complete 
       error: function() { 
        alert('ERROR'); 
       }, //end error 
       success: function(html) { 
       //Here do something with the result hold in the html variable 
       } //end succes 
      }); //end ajax 

对于您可以访问jQuery文档http://docs.jquery.com/Ajax

1

您在正确的轨道上。

MVC的路由功能使得再次“输入控制器”变得非常简单。只需使用jQuery ajax方法进行POST或GET请求即可。

我会发布一些代码,但我不知道你想做什么。

1

对于初学者,您将Ajax帮助器作为MVC框架的一部分,它具有各种MVC ajax任务的帮助器,请检查它们。否则,控制器和操作都是正常的可请求的URL,无论您选择的是哪种Ajax工具。

1

有点像一个完整的参考使用jQuery如下:

$.post('/ControllerName/ActionName', {}, function(result) { 
    // handle result here... 
}); 
1

你绝对可以这样做只是通过使另一GET或POST到控制器/动作要调用。在该操作中,您可以使用扩展方法Request.IsAjaxRequest();确定请求是否来自Ajax。这将允许您的操作对AJAX请求的响应与通常情况不同。

例如,我有一个TwitterController,它在首页上读取我的twitter RSS源。在我的操作中,我执行以下操作:

public ActionResult Feed(string id) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     // return some pretty Json of my tweets 
     return Json(GetMyFeeds(id)); 
    } 
    else 
    { 
     // I don't want to respond to Non-AJAX requests. 
     return RedirectToAction("Index", "Home"); 
    } 
} 
1

您可以使用JQuery或内置的ASP.NET Ajax库轻松做到这一点。它允许你从控制器返回数据,或者你可以使用部分视图。

看一看this post I made