MVC - 返回部分视图正在创建新页面

时间:2017-08-04 11:23:15

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

我有一个包含一些输入字段的表单。当用户点击我想要发回字段的提交时,使用它们查询服务并将一些结果加载到同一页面上的视图中,同时保留原始输入。为此,我使用我的模型搭建了一个视图,并在下面添加了一个局部视图来填充结果。

....bottom of form <div class="form-group">
        @Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.PostalAmount, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Search" class="btn btn-default" />
        </div>
    </div>
</div>

<div class="list-group">
    @Html.Partial("_ResultsPartial")
</div>

在我的控制器中,我有2个动作,一个用于创建初始视图,另一个用于回发。

        [HttpGet]
    public ActionResult Search()
    {
        ViewBag.Message = "Enter search details";

        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public PartialViewResult Search(SearchCriteria searchCriteria)
    {
        List<SearchResult> results = new List<SearchResult>();
        if (ModelState.IsValid)
        {
           //await go off and do the actaul search
           results = _dataProvider.GetData(searchCriteria);
        }
        return PartialView("~/Views/Shared/_ResultsPartial.cshtml", results);
    }

因此,为了渲染局部视图,我使用返回的PartialView传递包含搜索结果的新模型。我遇到的一个问题是创建一个新页面,即部分视图不会加载到现有页面上。在控制器操作中渲染局部视图还有什么其他方法可以在创建的页面上加载局部视图?

2 个答案:

答案 0 :(得分:0)

尝试使用以下内容替换渲染:

@{Html.RenderAction("Results", new {results = model.Results})};

答案 1 :(得分:0)

尝试这个

return PartialView("_ResultsPartial", results);