簡體   English   中英

一個控制器,多種視圖,多種形式

[英]One controller, multplie views, multiple forms

目標是使用向導創建一頁。 向導的每個步驟都是包含表單的局部視圖。 我只有一個控制器(保險),每個視圖都有一個動作。 這些操作將接收發布的數據,並返回下一步的視圖模型或包含錯誤詳細信息的當前步驟的視圖模型。

頁面(Index.cshtml)具有部分視圖,呈現為@Html.Partial("~/Views/Shared/_RegistrationCode.cshtml") ,部分視圖本身包含一個表單,呈現為@using (Html.BeginForm("RegistrationCodeDetails", "Insurance", FormMethod.Post)) {@using (Html.BeginForm("RegistrationCodeDetails", "Insurance", FormMethod.Post)) {<input type="submit" name="nextButton" value="Verder" class="btn btn-success" />提交。

該代碼按預期工作,直到第一個動作使用return PartialView("_Product", productViewModel);下一步的視圖模型(部分視圖return PartialView("_Product", productViewModel); ActionResult不會發送到部分視圖,而是呈現為完整視圖,因此結果是部分呈現為屏幕上唯一的內容。

我擺弄了@using (Ajax.BeginForm("RegistrationCodeDetails", "Insurance", new AjaxOptions { UpdateTargetId = "articleProductOutput", HttpMethod = "Post" })) {

編輯:

我們已決定采用另一種方法:一頁,一個控制器和基本上一個視圖模型。 初始數據立即呈現,使用JSON和局部視圖檢索依賴於向導中其他步驟的數據。

除非將部分視圖標記為[ChildActionOnly],否則它將不會在同一頁面中加載! 您的局部視圖應該看起來像

[ChildActionOnly]
public ActionResult _ParialView1()
{
//TODO: Add the required code here
}

//並且您的PartialView應該包含在主視圖中,如下所示:

@{Html.Action("_PartialView1","Controller1");}

謝謝,希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM