将数据从视图传递到控制器到模板视图到部分视图?

时间:2017-05-30 19:51:41

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

所以我有一个令人困惑的情况,可能只需要对我的代码进行一些认真的重组,但我会尽力解释,如果需要进一步澄清或代码,我会很乐意回答任何问题。的问题。

在我的一个名为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。任何建议(关于如何实现这一点,或如何重新安排我的代码以实现相同的目标)将不胜感激。对不起,很长的帖子!

0 个答案:

没有答案