首页 文章

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

提问于
浏览
1

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

....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

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

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

    Try this one

    return PartialView("_ResultsPartial", results);
    

相关问题