2009-09-25 62 views
0

我對這兩個都很新,所以請原諒我的基本問題。使用jQuery在MVC ASP.Net中加載部分視圖

我有一個索引頁,如:

<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

感謝您的答案 - 無論是真的很有幫助。我在控制器(驢)中返回一個View而不是PartialView。

我現在有一個文本框tha增量返回行到我的部分列表基於文本框val,這正是我一直以來的。

再次感謝。

Davy

2

由於#jQuerySubmit是一個表單提交按鈕,你需要防止正常提交表單的默認操作(沒有AJAX)。從您的click處理程序做到這一點,你需要return false

$(document).ready(function() { 
    $("#jQuerySubmit").click(function() { 
     $("#SiteList").load("/Site/IndexSearch/");   
     return false; 
    }); 
}) 
+0

感謝球員 - 仍然沒有工作,並試圖在IE和Firefox的兩種方法。有任何想法嗎? – Davy 2009-09-25 11:29:56

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. 
     ... 
    }); 
}); 
相關問題