我是ASP.NET MVC(-4)的新手。
我想使用jquery从我的网站进行Ajax调用,并使用返回的html填充页面上的div。因为它只是一个div,我不需要一个完整的html页面的标题和完整的主体和东西。
接收端应该是什么?
它应该是普通视图、部分视图、某种特殊类型的资源或处理程序,还是其他一些魔术?
发布于 2012-08-23 22:20:52
您可以将其与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-23 22:14:06
,因为它只是一个div,我不需要一个完整的html页面的标题和完整的主体和东西
你想要一个PartialView
发布于 2012-08-23 22:11:15
可以返回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")");如果您希望相同的Action方法处理Ajax调用和普通GET请求调用(在Ajax上返回部分视图,在普通Http GET请求上返回普通视图),则可以使用Request.IsAjax属性来确定。
public ActionResult GetUserInfo()
{
if (Request.IsAjaxRequest)
{
return View("Partial/GetUserInfo.cshtml");
}
return View(); //returns the normal view.
}假设您在Views/YourControllerName/Partial文件夹中预先设置了局部视图(布局设置为空的视图
https://stackoverflow.com/questions/12093552
复制相似问题