2009-05-21 37 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); 
相关问题