我对MVC还是很陌生,所以这似乎是一个显而易见的问题,但是在发布到我的ActionResult时,会调用ActionResult,但是View不会改变。
我正在做的是拥有一个基本的搜索页面,用户可以在其中搜索我的数据库,并返回结果并进行分页。
这是在我的控制器中调用该ActionResult的javascript。
function SubmitSearch() {
var searchBox = document.getElementById('searchBox');
$.post("MyController/SearchResults/",
{
searchString: searchBox.value,
page: 0
});
window.location = "../DriverStudio/Drivers/SearchResults/" + searchBox.value + '/0';
}
我当前的解决方案(这是一个可怕的技巧)是注释掉$ .post(因为我的路线是以window.location将调用SearchResutls ActionResult的方式设置的)并将window.location设置为用户搜索的内容从第0页开始。
一定有更好的方法。我该怎么办?
最佳答案
设置SearchResults操作以返回部分视图,该视图仅包含执行搜索时要更新的页面部分。该部件应装在某个容器中,以便于更换。然后,对post方法使用回调机制,以DIV的内容替换为SearchResults操作返回的部分视图结果。从处理程序中返回false,以阻止采取默认的提交操作。
function SubmitSearch() {
var searchBox = $('#searchBox');
$.post("MyController/SearchResults/",
{
searchString: searchBox.val(),
page: 0
}, function(data) {
$('#searchResults').html( data );
});
return false;
}
假设一些视图代码如下所示:
<% using (Html.BeginForm()) { %
<label for="searchBox">Search:</label>
<%= Html.TextBox("searchBox") %>
<% } %>
<div id="searchResults">
</div>
关于jquery - jQuery $ .Post不会更改 View 。我该怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2337351/