【问题标题】:Invoke controller from a javascript function从 javascript 函数调用控制器
【发布时间】:2011-04-18 20:00:06
【问题描述】:

我正在尝试从 javascript 函数调用控制器方法,我读到它可以与 jquery .ajax 一起使用。问题是我不想收到结果,控制器根据我通过 ajax 发送的 id 呈现视图。我有以下代码,但它没有做任何事情......

(这个函数被一个flash对象调用)

function display(number) {

       $.ajax({
          type: "POST",
          url: "/Controller/Method",
          data: "id=" + number});

}

控制器的方法如下所示:

 [HttpPost]
 public ActionResult Method(int? id) {

   object = //do the query.

   return View(object);


 }

【问题讨论】:

    标签: asp.net asp.net-mvc ajax asp.net-mvc-2 asp.net-mvc-3


    【解决方案1】:

    如果您检测到 AJAX 请求,您可以返回 JsonResult

    if (Request.IsAjaxRequest()) {
        return Json(new { Status = "OK" });
    } else {
        return View();
    }
    

    【讨论】:

    • 我不想返回一个对象,我想知道这是否可能。我只想返回一个视图...
    • 那么你想用AJAX获取View并显示出来?抱歉,我想我误解了你的问题。
    • ajax 发布控制器方法要找到的对象的 id,控制器方法返回一个视图,其中包含它在数据库中搜索的对象。
    • 是的,我想我会返回一个JSON对象,它没有意义,它会更好,我想了想。谢谢!!另外,我正在调用相同的视图。带有 ajax 的视图调用控制器方法,控制器方法返回相同的视图,但带有基于 ajax 发送的内容的附加信息。
    【解决方案2】:

    如果您想通过 ajax 更新您的 HTML,您应该在您的 ajax 请求的回调函数中更新您网站的内容。如果您只是想使用刚刚返回的 HTML 导航到新页面,请使用 window.location 方法。

    在这两种情况下,请确保在 ajax 调用的成功回调函数上执行此操作。

    【讨论】:

      【解决方案3】:

      您可以返回PartialView,它将返回可用于更新 DOM 的 HTML,但听起来您只是想直接向 url 发出请求,在这种情况下,只需这样做

      window.location = "/url_to_you_controller_action/{id to view}";
      

      假设您有一个与您正在向其发出请求的 url 匹配的路由,控制器操作可以从路由值中获取 id。

      AJAX 请求通常用于在不执行完整页面请求和刷新的情况下与服务器通信。通常这种通信会返回一些东西,但并非总是如此,但如果它确实返回了一些东西,那么通常会使用从服务器返回的数据以某种方式操作 DOM。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 2012-01-17
        • 1970-01-01
        • 2017-07-25
        • 2012-02-21
        相关资源
        最近更新 更多