asp.net mvc-4:什么应该接收ajax调用

时间:2012-08-23 14:08:02

标签: ajax asp.net-mvc asp.net-mvc-4

我是ASP.NET MVC(-4)的新手。

我想使用jquery从我的网站进行Ajax调用,并使用返回的html在页面上填入div。因为它只是一个div我不需要一个带标题和完整正文的完整html页面。

接收方应该做什么?

它应该是普通视图,部分视图,某种特殊类型的资源或处理程序还是其他一些魔法?

3 个答案:

答案 0 :(得分:3)

您可以将此功能与Post和Get operaitons一起使用

脚本

 $.ajax({
      url: '@Url.Action("SomeView")',
      type: 'GET',
      cache: false,
      data: { some_id: id},
      success: function(result) {
          $('#container').html(result);
      }
  });

控制器

public ActionResult SomeView(int some_id)
{
    ....
    return PartialView();
}

查看

<div id="container">
    @Html.Partial("SomeViewPartial")
</div>

或者您可以使用AjaxActionLink

查看

@Ajax.ActionLink("text", "action", "controller",
new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "container",
    OnSuccess = "onSuccess",
})

脚本

function onSuccess(result) {
    alert(result.foo);
}

控制器

public ActionResult SomeView(int some_id)
{
    return Json(new { foo = "bar" }, JsonRequestBehavior.AllowGet);
}

您可以使用Ajax.ActionLink仅更新内容页面。使用这个:

~/Views/ViewStart.cshtml:

@{
    Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";
}

答案 1 :(得分:2)

  

因为它只是一个div我不需要一个带标题和完整正文的完整html页面

您需要PartialView

答案 2 :(得分:1)

您可以返回将Layout属性值设置为null

的视图
public class UserController : Controller
{
    public ActionResult GetUserInfo()
    {
      return View();
    }
}

并在GetUserInfo.cshtml

@{
  Layout=null;
}
<h2>This is the UserInfo View :)</h2>

您可以使用jQuery ajax方法从任何页面调用它

$("#someDivId").load("@Url.Action("User","GetUserInfo")");

如果您希望Same Action方法处理Ajax调用和Normal GET请求调用,(返回Ajax上的部分视图,返回Normal Http GET请求的普通视图),您可以使用Request.IsAjax属性确定。

 public ActionResult GetUserInfo()
 {
    if (Request.IsAjaxRequest)
    {
       return View("Partial/GetUserInfo.cshtml");
    }
    return View();  //returns the normal view.
 }

假设您将部分视图(布局设置为null的视图)预设在Views/ YourControllerName /Partial文件夹中