[英]How do I pass a string to a partial view in ASP.NET MVC?
我有一个搜索页面,如果列表中有结果,它会将此列表传递给视图。 但是,如果没有结果,我想将搜索到的文本发送到找不到结果的视图。 我该怎么做?
您需要将搜索到的文本作为返回到视图的模型的一部分提供。 那你有两个选择 -
使用RenderPartial会将返回的视图传递给局部视图,以便您可以从那里访问所需的值。
Html.RenderPartial("PartialView");
或者,您可以使用字符串作为部分视图的模型
Html.RenderPartial("PartialView", Model.SearchedText);
如果要将不带结果的局部视图与不同的模型一起使用,这可能是有意义的。
<%Html.RenderPartial("SimpleTrustGridViewer", ViewData["departmentGrid"]); %>
这会将对象ViewData [“departmentGrid”](这来自非局部视图的viewdata)传递给局部视图SimpleTrustGridViewer。
简化:
<%Html.RenderPartial("myUserControl", myString); %>
你的部分视图继承如下:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
然后,在您的局部视图中,“模型”将是传递的字符串。
您可以对div标签使用jquery和load()
动作,使用partial; 结果是类似的。 load()
ajax方法在控制器上调用您想要的文本。 喜欢:
$('#divId').load('url/'+ serch content );
从控制器传递到视图的ViewDataDictionary将从View传递到Partial View。 因此,如果要传递的字符串位于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>
<%} %>
我试过这个并且无法让它发挥作用。 说我有
<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语句呈现不同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.