我有一个搜索页面,如果列表中有结果,它会将这个列表传递给一个视图。 但是,如果没有结果,我想将搜索的文本发送到一个“未找到结果”的视图。 我该如何处理呢?
我有一个搜索页面,如果列表中有结果,它会将这个列表传递给一个视图。 但是,如果没有结果,我想将搜索的文本发送到一个“未找到结果”的视图。 我该如何处理呢?
您需要将搜索文本作为返回给视图的模型的一部分进行传递。然后,您有两个选择 -
使用RenderPartial将返回的视图传递给局部视图,以便您可以从那里访问所需的值。
Html.RenderPartial("PartialView");
另外,您可以将字符串作为部分视图的模型传递。
Html.RenderPartial("PartialView", Model.SearchedText);
如果你想使用无结果的局部视图来处理不同的模型,这样做可能是有意义的。
<%Html.RenderPartial("SimpleTrustGridViewer", ViewData["departmentGrid"]); %>
<%Html.RenderPartial("myUserControl", myString); %>
你的局部视图继承如下:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
load()
动作在div标签上,而不是使用partial;结果是相似的。
load()
ajax方法调用控制器并传递所需的文本。
例如:$('#divId').load('url/'+ serch content );
<%=Html.RenderPartial("NorResultFound")) %>
但是您可以使用相同的视图,无论是否有结果:
<%if (Model.ResultCount!=0){ %>
<%foreach(var result in Model){ %>
<%= // display results %>
<%}}%>
<%else {%>
<p>There is no results for <%=ViewData["keyword"]%> </p>
<%} %>
class SearchResult
{
public IList List {get; set;}
public string Query {get; set;}
}
- Andrea Balducci我尝试过这个,但无法使其工作。假设我有
<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)在控制器中,如果没有结果,只需调用不同的视图并传递一个字符串作为模型。 2)创建一个包含搜索状态(找到x个项目,未找到匹配项等)和结果列表的模型,将其传递给相同的视图,允许视图使用switch语句呈现不同的结果。