我試圖實現系統中每個頁面上存在的Widget控件,這將允許用戶在每個頁面上都具有基本搜索目錄功能。這是一個下面定義的選項卡控件,其中<ul>
當前選定的選項卡由Model.CurrentTab
中的值確定,我想顯示的對應內容(基本上可見)也由該值確定。當我將「」傳遞給RenderAction時,爲什麼這個View Model會被填充?
<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
包含值「目錄」,這意味着(我認爲)Html.RenderAction("SearchBox"...
應傳入一個空字符串。但是當它到達操作方法時,傳遞到SearchBox
的視圖模型包含值而不是""
我不明白爲什麼會發生這種情況。即使我將一個空字符串傳入SearchBox
,View Model仍然包含一個值。有人能解釋一下發生了什麼嗎?我應該這樣做嗎?
更新:
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
你能告訴我們DirectoryList和SearchBox的方法定義嗎?我正在努力研究正在發生的事情。 – 2010-09-02 23:32:41
分享模型錯誤的價值會有所幫助。 – jfar 2010-09-02 23:40:21
@Alistair,我已經更新了這個問題 – DaveDev 2010-09-02 23:42:55