2017-02-24 84 views
1

我已經在剃刀中完成了一個表單。用戶可以在兩個動作之間選擇採取與他們填寫到表單中的數據,將表單數據傳遞給.NET中的多個動作

SaveCurrentProgress(User user) 

...允許用戶保存表單的當前狀態,然後回來稍後。或者:

SubmitFinalVersion(User user) 

它保存表單數據,然後呈現它只讀。我知道如何使用Html.BeginForm()將一個對象傳遞給一個單獨的動作/控制器,但是我如何編寫它,以便用戶可以將對象傳遞給兩個動作之一?

+1

我覺得這個問題有你正在尋找的答案:[你如何處理ASP.NET MVC框架中的多個提交按鈕?](http://stackoverflow.com/questions/442704/how-do-you- handle-multiple-submit-buttons-in-asp-net-mvc-framework) –

+1

只是在數據中加入一些東西,這些東西被傳遞來確定進程...所以它總是會觸發action1,但它可能會在action1中傳遞給action2取決於數據中的一個值。 – Seabizkit

回答

1

您不能真的。你可能會製造出一些JS解決方案,它會根據點擊按鈕來切換動作,但就基本形式而言,無法有條件地改變動作。

但是,您可以命名您的提交按鈕,然後在一個單一的行動內分支。例如:

<button type="submit" name="SaveProgress">Save Current Progress</button> 
<button type="submit" name="SaveFinal">Save Final Version</button> 

然後,在你一個行動:

if (Request["SaveProgress"] != null) 
{ 
    // save progress 
} 
if (Request["SaveFinal"] != null) 
{ 
    // save final 
} 

因爲只有被點擊的按鈕將使其進入後的數據,您可以使用該按鈕的名稱存在以確定用戶點擊了哪個。

最後一個選擇是根本不用擔心保存不完整的數據服務器端。您可以利用localStorage在用戶將其添加到表單中時保存輸入的數據。這意味着你甚至不需要明確的按鈕來達到目的。然而,這種方法的缺點是必須綁定到用戶正在編輯的瀏覽器和機器上(因爲它是客戶端)。如果他們移動到另一臺計算機上,他們將無法恢復編輯。

相關問題