システムのすべてのページに存在するウィジェットコントロールを実装しようとしています。これにより、ユーザーは各ページで基本的な検索とディレクトリ機能を利用できるようになります。これは以下に定義されているタブコントロールです。<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