我是 ASP.NET MVC(-4) 的新手。
我想使用 jquery 从我的网站进行 Ajax 调用,并使用返回的 html 在页面上填写一个 div。因为它只是一个 div,所以我不需要带有标题和完整正文等内容的完整 html 页面。
接收端应该是什么?
它应该是普通视图、局部视图、某种特殊类型的资源或处理程序还是其他一些魔法?
我是 ASP.NET MVC(-4) 的新手。
我想使用 jquery 从我的网站进行 Ajax 调用,并使用返回的 html 在页面上填写一个 div。因为它只是一个 div,所以我不需要带有标题和完整正文等内容的完整 html 页面。
接收端应该是什么?
它应该是普通视图、局部视图、某种特殊类型的资源或处理程序还是其他一些魔法?
您可以将其与 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";
}
由于它只是一个 div 我不需要带有标题和完整正文的完整 html 页面和内容
你想要一个PartialView
您可以返回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 的视图)