2017-08-04 30 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})}; 
相關問題