所以我有一个令人困惑的情况,可能只需要对我的代码进行一些认真的重组,但我会尽力解释,如果需要进一步澄清或代码,我会很乐意回答任何问题。的问题。
在我的一个名为Clear.cshtml的视图中,我有一堆文本框用于搜索我的Projects数据库(Project.cs是我网站的主要模型)。文本框尚未实现为搜索框,我只是在页面上设置了所有文本框,目前除了看起来不好之外它们什么都不做。我在页面顶部还有一个按钮,它应该是搜索按钮。它还没有做任何事情。以下是代码片段:
<button type="button" id="show" class="find-proj">Find Project</button>
<div class="form-vertical">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-5 entry-field">
@Html.LabelFor(model => model.Project.FirstNamedInsured, htmlAttributes: new { @class = "control-label" })
@Html.EditorFor(model => model.Project.FirstNamedInsured, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Project.FirstNamedInsured, "", new { @class = "text-danger" })
</div>
</div>
...etc.
该代码中的 model
是一个名为ProjectViewModel.cs的ViewModel。这就是它的样子(非常简单):
public class ProjectViewModel
{
public IQueryable<Project> Projects { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
public Project Project { get; set; }
}
States
只是填充Clear.cshtml上的下拉菜单。
我想使用这些搜索框返回我的数据库中与所有术语匹配的项目列表(我不希望搜索框都不是必需的,但返回的项目列表应该匹配所有搜索已填充的盒子)。我试图在this guide之后对我的控制器进行建模,所以这就是当前的操作:
public ActionResult Clear(string firstNamedInsured)
{
var states = GetAllStates();
var model = new ProjectClearanceApp.Models.ProjectViewModel();
model.States = GetSelectListItems(states);
model.Projects = from m in db.Projects select m;
if (!String.IsNullOrEmpty(firstNamedInsured))
{
model.Projects = model.Projects.Where(s => s.FirstNamedInsured.Contains(firstNamedInsured));
}
return View(model);
}
我显然在该功能中只有一个搜索词,因为当我试图逐步实现时,我遇到了问题。我的局部视图在页面底部的_Layout.cshtml中呈现,如下所示:
<div class="container body-content">
@RenderBody()
<hr />
</div>
<div class="wrapper">
@Html.Partial("~/Views/Projects/_ClearedProjects.cshtml")
</div>
基本上我正在尝试将搜索条件从Clear.cshtml传递给ProjectController.cs,然后将匹配项目列表传递给_Layout.cshtml,然后再将列表从_Layout.cshtml传递给_ClearedProjects。 CSHTML。任何建议(关于如何实现这一点,或如何重新安排我的代码以实现相同的目标)将不胜感激。对不起,很长的帖子!