我对这两个都很新,所以请原谅我的基本问题。
我有一个索引页面,如:
<div id="SearchBar">
<%= Html.Encode("Search by Site Name: ") + Html.TextBox("SearchTextBox") %>
<input type="submit" value="Search" id="jQuerySubmit" />
</div>
<div id="SiteList">
<% Html.RenderPartial("SiteIndexSearchResults", Model); %>
</div>
一切正常。
我想根据用户在“SearchTextBox”中输入的内容重新加载这个部分(我现在已经在控制器中对其进行了硬编码 - 用于测试目的)
我无法使用以下方式重新加载:
$(document).ready(function() {
$("#jQuerySubmit").click(function() {
$("#SiteList").load("/Site/IndexSearch/");
});
});
它进入控制器并确实返回基于IsAjaxResult的新视图,但不刷新页面。
提前致谢。
戴维
答案 0 :(得分:2)
由于#jQuerySubmit是表单提交按钮,因此您需要阻止正常提交表单的默认操作(不使用AJAX)。为此,您需要从点击处理程序中return false
:
$(document).ready(function() {
$("#jQuerySubmit").click(function() {
$("#SiteList").load("/Site/IndexSearch/");
return false;
});
})
答案 1 :(得分:2)
您需要停止链接点击的“正常”处理。在大多数浏览器中,这是通过让点击处理程序返回false
来完成的,但在Firefox中你也可以使用event.preventDefault()
,如下所示:
$(function() { // Shorthand for the $(document).ready(function() { - does the same
$('#jQuerySubmit').click(function(ev) { // Takes the event as a parameter
ev.preventDefault();
$('#siteList').load('/Site/IndexSearch/');
return false;
});
});
如果您希望将此行为应用于AJAX的更多链接,则可以使用.live()
代替.click()
,如下所示:
$(function() {
$('#jQuerySubmit').live('click', function(ev) {
// The behavior is now applied to all links that are ever loaded on the page
// that have the id set to jQuerySubmit.
...
});
});
答案 2 :(得分:0)
感谢您的回答 - 两者都非常有用。我在我的控制器(驴)中返回了View而不是PartialView。
我现在有一个textBox,它会根据文本框val逐步将行返回到我的部分列表中,这就是我一直以来的目的。
再次感谢。
戴维