代码之家  ›  专栏  ›  技术社区  ›  Davy

使用jquery在MVC ASP.NET中加载分部视图

  •  0
  • Davy  · 技术社区  · 15 年前

    我对这两个都很陌生,所以请原谅我的基本问题。

    我有一个索引页,比如:

    <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为true的新视图,但不刷新页面。

    事先谢谢。

    戴维

    3 回复  |  直到 15 年前
        1
  •  2
  •   Darin Dimitrov    15 年前

    由于jquerysubmit是一个表单提交按钮,因此您需要防止正常提交表单(不使用Ajax)的默认操作。要做到这一点,你需要 return false 从您的单击处理程序:

    $(document).ready(function() { 
        $("#jQuerySubmit").click(function() {
            $("#SiteList").load("/Site/IndexSearch/");         
            return false;
        });
    })
    
        2
  •  2
  •   Tomas Aschan    15 年前

    您需要停止对链接单击的“正常”处理。在大多数浏览器中,这是通过让单击处理程序返回 false 但是在火狐中你也可以使用 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.
            ...
        });
    });
    
        3
  •  0
  •   Davy    15 年前

    谢谢你的回答-都很有帮助。我返回的是一个视图,而不是控制器(驴子)中的一个局部视图。

    现在我有了一个文本框,它基于文本框val递增地将行返回到我的部分列表中,这就是我一直在做的事情。

    再次感谢。

    戴维