2

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

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

接收端应该是什么?

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

4

3 回答 3

3

您可以将其与 Post 和 Get 操作一起使用

脚本

 $.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";
}
于 2012-08-23T14:20:51.690 回答
2

由于它只是一个 div 我不需要带有标题和完整正文的完整 html 页面和内容

你想要一个PartialView

于 2012-08-23T14:14:06.350 回答
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.
 }

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

于 2012-08-23T14:11:14.550 回答