2017-08-04 208 views
0

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

....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传球,其中包含我的搜索结果的新模式。我遇到的问题之一是创建一个新页面,即部分视图不会加载到现有页面上。还有什么其他方式可以在控制器操作中呈现局部视图,以便在创建的页面上加载局部视图?

+0

使用Ajax调用返回的局部视图的方法,并更新现有页面。 –

+0

听起来没问题。但我真的正在寻找阻力最小的路径。这不是生产代码。与我现在给定的安装程序有一个更简单的方法 – user48408

+0

请参阅[这个问题/答案](https://stackoverflow.com/questions/29142422/rendering-partial-view-on-button-click-in-asp-净MVC/29142790#29142790) –

回答

0

尝试的东西,如更换您呈现:

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