我是ASP.NET MVC(-4)的新手。
我想使用jquery从我的网站进行Ajax调用,并使用返回的html在页面上填入div。因为它只是一个div我不需要一个带标题和完整正文的完整html页面。
接收方应该做什么?
它应该是普通视图,部分视图,某种特殊类型的资源或处理程序还是其他一些魔法?
答案 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
文件夹中