Я пытаюсь реализовать элемент управления Widget, который существует на каждой странице в системе, что позволит пользователю иметь базовые функции поиска и справочника, доступные на каждой странице.Это элемент управления вкладкой, определенный ниже, где в <ul>
текущая выбранная вкладка определяется значением в Model.CurrentTab
, а соответствующее содержимое, которое я хочу отобразить (в основном, сделать видимым), также определяется этим значением.
<div class="WidgetControl">
<ul class="WidgetTab tabs">
<li <%= (Model.CurrentTab == "Search") ? "class='active'" : "" %>>
<span href='<%= Url.Action("SearchBox", "Search") %>'>Search</span>
</li>
<li <%= (Model.CurrentTab == "Directory") ? "class='active'" : "" %>>
<span href='<%= Url.Action("DirectoryList", "Group") %>'>Directory</span>
</li>
</ul>
<div id="Search" class="tab_container">
<% Html.RenderAction("SearchBox", "Search"
, (Model.CurrentTab == "Search") ? Model.Search : ""); %>
</div>
<div id="Directory" class="tab_container">
<% Html.RenderAction("DirectoryList", "Group"
, (Model.CurrentTab == "Directory") ? Model.Search : ""); %>
</div>
</div>
Причина, по которой я хочу загрузить и Search
, и Directory
, заключается в том, что странице не нужно запрашивать содержимое в зависимости от того, на какой вкладке нажата кнопка.Я хочу, чтобы все это было доступно немедленно.
Проблема, с которой я столкнулся, заключается в том, что если CurrentTab
содержит значение "Directory", это означает (я предположил), что Html.RenderAction("SearchBox"...
должен передать пустую строку.Но когда дело доходит до метода действия, модель представления, переданная в SearchBox
, содержит значение, а не ""
. Я не понимаю, почему это происходит.Даже когда я передаю пустую строку в SearchBox
, модель представления все еще содержит значение.Может кто-нибудь объяснить, что происходит?Должен ли я делать это по-другому?
обновление:
public PartialViewResult DirectoryList(DirectoryViewModel vm)
{
return PartialView(vm.Search); // this is expecting a string
}
public PartialViewResult SearchBox(SearchViewModel vm)
{
return PartialView(vm); // the among other things, the Search string is used
}
Оба DirectoryViewModel
и SearchViewModel
содержат свойство с именем Search