在视图中我有如下形式的ajax形式:
@using (Ajax.BeginForm("ShowPartial", new AjaxOptions()
{
InsertionMode=InsertionMode.Replace,
UpdateTargetId="dane"
}))
{
// My menu here
}
@Html.Partial("ShowPartial")
ShowPartial与此控制器方法连接:
public ActionResult ShowPartial(string DeviceName, string submit, int? Page)
{
List<Expression<Func<DeviceInstance, bool>>> where = new List<Expression<Func<DeviceInstance, bool>>>();
int PageNo = 1;
if (Page.HasValue)
{
PageNo = Page.Value;
}
if (DeviceName != "" && DeviceName != null)
{
where.Add(w => w.Device.Name.Contains(DeviceName));
}
return PartialView(unitOfWork.deviceInstanceRepository.Get(where, q => q.OrderBy(o => o.Id), PageNo, w => w.Device, w => w.DeviceUsage));
}
和PartialView:
@model IEnumerable<magazyn.Models.DeviceInstance>
<table class="table table-striped" id="dane">
<tr>
//table headers
</tr>
@foreach (var item in Model)
{
// rendering table contet
}
</table>
任何人都可以告诉我为什么上面的代码是完全回发而不是部分回复。
答案 0 :(得分:11)
我不知道微软的ajax助手依赖于Jquery + Microsoft jquery插件。 在意识到我找到了需要的插件并将其下载到包管理器之后。
PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax
答案 1 :(得分:6)
检查此工作解决方案 -
让您的主控制器操作如下所示 -
public ActionResult Ajax()
{
return View();
}
它将返回以下View。我已经安装了Unobstructive Ajax nuget并引用了它的js脚本,如下所示。
@{
ViewBag.Title = "Ajax";
}
<h2>Ajax</h2>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
@using (Ajax.BeginForm("ShowPartial", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "dane"
}))
{
<input type="submit" value="click"/>
}
<div id="dane">
@Html.Action("ShowPartial")
</div>
然后我还有一个控制器动作,当这个ajax请求发出时会被击中。此控制器操作将返回您的部分视图 -
public ActionResult ShowPartial()
{
return PartialView("MyPartial");
}
部分视图如下 -
<div>
@DateTime.Now
</div>
当您运行该应用程序并单击该按钮时,将在div中更改日期时间而不进行回发 -