我试图实现系统中每个页面上存在的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