繁体   English   中英

如何将字符串传递给ASP.NET MVC中的部分视图?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM