Как передать строку в частичное представление в ASP.NET MVC? - PullRequest
4 голосов
/ 21 мая 2009

У меня есть страница поиска, которая, если в списке есть результаты, передает этот список в просмотр. Однако, если нет результатов, я хочу отправить искомый текст в представление не найдено. Как бы я пошел по этому поводу?

Ответы [ 7 ]

6 голосов
/ 21 мая 2009

Вам нужно, чтобы искомый текст был доступен как часть модели, которая возвращается в представление. Тогда у вас есть два варианта -

Использование RenderPartial передаст возвращенное представление частичному представлению, чтобы вы могли получить доступ к нужному значению оттуда.

Html.RenderPartial("PartialView");

В качестве альтернативы, вы можете передать строку в качестве модели для частичного вида, используя

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

Что может иметь смысл, если вы хотите использовать частичное представление без результатов в разных моделях.

3 голосов
/ 21 мая 2009
<%Html.RenderPartial("SimpleTrustGridViewer", ViewData["departmentGrid"]); %>

это передает объект ViewData ["DepartmentGrid"] (это происходит из данных представления неполного представления) в частичное представление SimpleTrustGridViewer.

упрощенный:

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

И ваш частичный вид наследуется так:

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

Тогда в вашем частичном представлении 'Model' будет передаваемой строкой.

1 голос
/ 26 сентября 2011

Вы можете использовать jquery и действие load() для тега div, вместо использования частичного; результат похож. Вызов метода load() ajax на контроллере с текстом, который вы хотите. как:

$('#divId').load('url/'+ serch content );
1 голос
/ 24 мая 2009

Я попробовал это и не смог заставить его работать. Скажи, что у меня есть

 <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 голос
/ 21 мая 2009

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 голосов
/ 21 мая 2009

Два способа (вы говорите о взглядах, а не о частичных представлениях, верно?) 1) в вашем контроллере просто вызовите другое представление в случае отсутствия результатов, передавая строку как модель 2) создайте модель, содержащую статус поиска (найденные х элементов, совпадений не найдено и т. Д.) И список результатов для одного и того же представления, что позволяет представлению отображать разные результаты с помощью оператора switch.

0 голосов
/ 21 мая 2009

Частичное представление, если вы явно не передаете ему что-либо, имеет ту же модель, что и родительское представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...