J'essaye d'implémenter un contrôle de Widget qui existe sur chaque page dans le système, qui permettra à l'utilisateur d'avoir la fonctionnalité de base de recherche & d'annuaire disponible sur chaque page. C'est un contrôle onglet défini ci-dessous, où dans le <ul>
l'onglet actuellement sélectionné est déterminé par la valeur dans Model.CurrentTab
et le contenu correspondant que je veux afficher (fondamentalement, rendre visible) est également déterminé par cette valeur.Pourquoi ce modèle de vue est-il rempli lorsque je passe "" dans RenderAction?
<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>
La raison pour laquelle je veux charger les deux Search
et Directory
est si la page ne doit pas demander le contenu en fonction de l'onglet est cliqué. Je veux que tout soit disponible immédiatement.
Le problème que j'ai est que si CurrentTab
contient la valeur "Directory" cela signifie (j'ai supposé) que Html.RenderAction("SearchBox"...
devrait passer dans une chaîne vide. Mais quand il arrive à la méthode d'action, le modèle de vue passé en SearchBox
contient une valeur et non ""
Je ne comprends pas pourquoi cela se produit. Même lorsque je passe une chaîne vide dans SearchBox
, le modèle de vue contient toujours une valeur. Quelqu'un peut-il expliquer ce qui se passe? Devrais-je faire cela différemment?
mise à jour:
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
}
Les deux DirectoryViewModel
et SearchViewModel
contiennent une propriété appelée Search
pouvez-vous nous montrer les définitions de méthodes pour DirectoryList et SearchBox? J'ai du mal à comprendre ce qui se passe. –
Le partage de la valeur incorrecte du modèle serait utile. – jfar
@Alistair, j'ai mis à jour la question – DaveDev