2009-05-21 71 views

回答

6

您需要將搜索到的文本作爲返回到視圖的模型的一部分。然後你有兩個選擇 -

使用RenderPartial會將返回的視圖傳遞給局部視圖,所以你可以從那裏訪問你想要的值。

Html.RenderPartial("PartialView"); 

或者,您可以傳遞字符串作爲模型使用

Html.RenderPartial("PartialView", Model.SearchedText); 

,如果你想使用不同型號的沒有結果的局部視圖,這可能使意義上的局部視圖。

+0

我必須添加它作爲模型的一部分。現在我需要重構我的代碼:) – ddd 2009-05-27 09:47:43

3
<%Html.RenderPartial("SimpleTrustGridViewer", ViewData["departmentGrid"]); %> 

此傳遞一個對象計算機[「departmentGrid」](這是來自非局部視圖的可視數據)對局部視圖SimpleTrustGridViewer。

簡化:

<%Html.RenderPartial("myUserControl", myString); %> 

而且你的局部視圖繼承這樣的:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %> 

然後,在你的局部視圖 '模式' 將傳遞的字符串。

0

部分視圖,除非您明確傳遞其他內容,與父視圖具有相同的模型。

1

從控制器傳遞到視圖的ViewDataDictionary將從視圖傳遞到部分視圖。所以如果你想傳遞的字符串在ViewDataDictionary中,你不必傳遞它。

<%=Html.RenderPartial("NorResultFound")) %> 

但是你可以用同樣的看法是否有結果還是不行:在您的控制器只是

<%if (Model.ResultCount!=0){ %> 
<%foreach(var result in Model){ %> 
<%= // display results %> 
<%}}%> 

<%else {%> 
<p>There is no results for <%=ViewData["keyword"]%> </p> 
<%} %> 
+0

我同意你的看法,但我更喜歡使用強類型模型來代替mixin ViewData和模型。 我的模型將有2個道具(重構友好代碼:D), class SearchResult { public IList List {get;設置;} 公共字符串查詢{get;設置;} } – 2009-05-21 09:57:47

0

兩種方法(你所談論的觀點,而不是局部的看法吧?) 1)在沒有結果的情況下調用不同的視圖作爲模型傳遞字符串 2)創建一個包含搜索狀態(找到x個項目,找不到匹配項等等)的模型以及到相同視圖的結果列表,從而允許通過switch語句顯示不同的結果。

1

我試過了,無法讓它工作。說我有

<div id="SearchBar"> 


<% using (Html.BeginForm("IndexNoJavaScript", "Home")) 
{%> 
<%= Html.TextBox("SearchTextBox", ViewData["SearchText"]) %> 
    <input type="submit" value="Search" /> <% } %> 
    </div> 
<% Html.RenderPartial("SearchResults"); %> 

,當我嘗試顯示在此視圖中搜索文本,像這樣:

<%= Html.TextBox("SearchedText", ViewData["SearchText"]) %> 

我的文本框爲空。

1

你可以對div標籤使用jquery和load()動作,使用partial;結果是相似的。 這個load() ajax方法用你想要的文本調用控制器。 like:

$('#divId').load('url/'+ serch content); 
相關問題