我对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/

10-13 06:03
查看更多