目的
我有一个简单的表,列出了名称(在局部视图中),并且在其上方有一个包含这些名称的下拉列表。目的是根据在下拉列表中选择的名称来过滤表。下拉列表中的选定值更改后,应立即进行过滤,并且应仅再次呈现部分视图。
问题
当我在下拉列表中选择一个值时,部分视图不会在其他视图中呈现,而是显示为整个页面。但是,当我在Ajax.BeginForm块中包含一个提交按钮并触发对提交按钮的操作时,它确实可以正常工作…
代码
控制者
public PartialViewResult Filter(string filterName) {
var names = from p in db.People
select p;
if (!String.IsNullOrEmpty(filterName))
{
names = names.Where(p => p.Name.Equals(filterName));
}
return PartialView("_PersonsTable", names);
}
视图
@model IEnumerable<Sandbox.Models.Person>
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Ajax.BeginForm("Filter", "Person", new AjaxOptions {
HttpMethod = "Get", UpdateTargetId = "SearchResults", InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace }))
{
@Html.DropDownList("filterName", new SelectList(ViewBag.Names), "Select a name", new { onchange = "this.form.submit()" })
}
@Html.Partial("_PersonsTable")
部分视图
@model IEnumerable<Sandbox.Models.Person>
<table id="SearchResults">
<tr>
<th>
Name
</th>
<th>
Age
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
那么为什么我的searchResults表没有呈现为部分视图呢?
我的_Layout视图中包含以下脚本:
<script src="/Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
在下拉菜单中替换:
new { onchange = "this.form.submit()" }
与:
new { onchange = "$(this.form).submit();" }
还要摆脱所有MicrosoftAjax*.js
脚本。这些是完全遗留的,不应在ASP.NET MVC
3和更高版本的应用程序中使用。仅出于兼容性原因提供它们,如果您要从旧版本迁移。jQuery.js
并且jquery.unobtrusive- ajax.js
足够了。
问题内容: 关于SO与Ajax.BeginForm的问题有很多关于SO的问题,这些主题没有正确地使用返回的局部视图更新目标元素: mvc4 ajax更新同一页 ASP.NET MVC 4-Ajax.BeginForm和html5 MVC4(剃刀)-控制器是返回partialview但整个页面正在更新MVC4Ajax不会更新页面内的PartialView 但是,所有这些都可以通过手动写出jQuery
我使用的是JSoup,想要替换和整个div,比如 与 我找到了替换div的innerHtml的方法,但是如何替换整个div呢?
然后我试着这样称呼它。 不幸的是,修改URL编码路径替换后,我最终请求而不是。是否有任何方法可以禁用路径替换的URL编码或跨多个路径段进行替换?不幸的是,我甚至不知道有多少路径段,它都是由API控制的。
页替换算法 操作系统为何要进行页面置换呢?这是由于操作系统给用户态的应用程序提供了一个虚拟的“大容量”内存空间,而实际的物理内存空间又没有那么大。所以操作系统就就“瞒着”应用程序,只把应用程序中“常用”的数据和代码放在物理内存中,而不常用的数据和代码放在了硬盘这样的存储介质上。如果应用程序访问的是“常用”的数据和代码,那么操作系统已经放置在内存中了,不会出现什么问题。但当应用程序访问它认为应该在内
我遇到了奇怪的问题,我在网上找不到任何东西。 我使用xpath定位我的xml块,然后用其他内容替换它,例如: 我使用XMLModifier来实际更新令牌(使用updateToken方法:),它用于属性操作或元素的文本(正文)。 我对样式元素有问题,我想处理它的主体,然后用指向某个文件的链接替换整个元素。 显然,更新文本标记将导致样式标记和其中的链接标记。 所以我试着把导航器移到样式元素,得到了这个
主要内容:页面替换算法的类型页面替换算法决定哪个内存页面将被替换。 替换过程有时称为换出或写入磁盘。在主存储器中找不到请求的页面时(页面错误),完成页面替换。 虚拟内存有两个主要方面,即帧分配和页面替换。 拥有最佳的帧分配和页面替换算法是非常重要的。 帧分配全部是关于将多少帧分配给进程,而页面替换则是确定需要替换的页码,以便为请求的页面留出空间。 如果算法不是最优的? 如果分配给进程的帧数量不够或不准确,则可能会出现抖动问题