我的网站上有一个侧边栏,其中包含一个绑定到viewmodel的文本框,需要在我网站的所有视图上。首先,我创建了viewmodel类和viewmodel cshtml文件(都在Shared文件夹中):
类别:
namespace CaseLaw.Web.Models.Shared
{
public class SidebarViewModel
{
public string SearchString { get; set; }
}
}
EditorTemplate:
@model CaseLaw.Web.Models.Shared.SidebarViewModel
<div class="form-group">
<div class="input-group">
@Html.TextBoxFor(m => m.SearchString, new { @class = "form-control", placeholder = "Search the Database" })
<span class="input-group-btn">
<input type="submit" class="btn btn-default caselawMainbtn" value="Search" />
</span>
</div>
</div>
之后,我创建了一个调用EditorTemplate的部分视图:
@model CaseLaw.Web.Models.Shared.SidebarViewModel
<div class="row caselawSidebarImg">
<h2 id="caselawTitle">Caselaw</h2>
<h4 id="caselawSubTitle">The complete database.</h4>
</div>
<div class="row caselawSearchForm">
<div class="col-sm-12">
@using (Html.BeginForm("Index", "OpinionDocument", new { SearchString = Model.SearchString }, FormMethod.Get, new { @class = "form-inline" }))
{
@Html.EditorForModel()
}
</div>
</div>
<div class="row caselawSidebarMenu">
<div class="col-sm-12">
<ul>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Your Notes</a></li>
<li><a href="#">Your Bookmarked Cases</a></li>
<li><a href="#">Your Projects</a></li>
<li><a href="#">Recently Viewed</a></li>
</ul>
</div>
</div>
然后,我在我的一个观点上调用了局部视图:
<div class="col-sm-2 caselawSidebar">
@{Html.RenderPartial("_Sidebar");}
</div>
问题是,该视图绑定到除了partialview内的editortemplate所需模型之外的其他模型,因此应用程序会抛出错误。如何将正确的模型发送到Partialview,并能够在我的网站中使用它?
谢谢!
答案 0 :(得分:0)
解决方案非常简单:我只需要创建一个新对象,如下所示:
@{Html.RenderPartial("_Sidebar", new CaseLaw.Web.Models.Shared.SidebarViewModel());}
我以前试过这个并且没有用,问题是我忘了在模型之前添加“new”。