2012-11-30 23 views
1

我有一個標準的ASP MVC 4表單,用戶可以編輯一些細節,然後單擊「批准」或「拒絕」,這將導致一個回。在ASP MVC如何區分後回到動作4的形式

當控制器接收後的模型回來了,我怎麼知道哪個按鈕被點擊?

我正在尋找這樣做,所以我不故弄玄虛的下一個開發誰對項目工作的標準方式。

編輯我使用支架後,

+0

您能否添加一些關於如何將數據發佈回服務器的細節?它只是一個標準的HTML表單,或者當他們點擊任一按鈕時使用一些Ajax調用? – Jamiec

+1

這個類似的問題可能會有所幫助:[link](http://stackoverflow.com/q/442704/943359)。我發現這個答案在MVC 3中效果很好:[link](http://stackoverflow.com/a/443047/943359) –

+0

是不是提交的輸入值?然後,您可以在控制器中使用if語句 – Konstantin

回答

6

給每個按鈕的名稱(同樣爲每個按鈕)和值(獨特的每個按鈕)。

<button type="submit" name="button" value="approve">Approve</button> 
<button type="submit" name="button" value="decline">Decline</button> 

然後用一個字符串參數添加到您的叫你分配到任何按鍵名哨方法。

[HttpPost] 
    public ActionResult ProcessForm (Model model, string button) 
    { 
     //the parameter 'button' will contain the value of the button clicked - either 'approve' or 'decline' 
    } 
1

你會想爲「批准」或「拒絕」權限做兩個獨立的「行動」?

我會在你的控制器的批准行動,並在控制器式微動作,所以那麼他們可以發佈到自己的實際行動,而不是試圖去處理在一個控制器動作這兩個業務流程。

這將使它很好的和明確了每個行動負責。

+0

我懷疑OP的下一個問題是「但是如何在單擊2個按鈕時更改表單動作」 – Jamiec

+0

是的。用戶在索引頁面上輸入詳細信息,但如果我可以根據按下哪個按鈕將這些詳細信息發回到同一控制器中的另一個事件,那將是非常好的。 – Kye

2

是我認爲最簡單的是,
變化的下降按鈕從submit輸入到button這種類型將不會回發到控制器,然後你就可以用幾行代碼將用戶重定向到其他頁面

3

已按倒在每一個HTML格式棘手的問題。它可能涉及到需要返回多少數據......如果您只需識別模型並且實際上不需要表單數據,那麼可以使用兩種不同的表單發佈到不同的控制器:非常透明和清晰的下一個開發者:

<div class="container"> 

<form method="POST" action="/approve/123"> 
    <input type="submit"> 
</form> 

<form method="POST" action="/decline/123"> 
    <input type="submit"> 
</form> 

<div> 

另外,如果你確實需要調回我的客戶端onclick事件附加到每個相應的更新表單操作按鈕的表單數據。然而,這是不是下一個開發人員清晰...

<div class="container"> 

<form method="POST" action="/"> 
    <input type="submit" value="Accept" id="btn-accept"> 
     <input type="submit" value="Decline" id="btn-decline"> 
</form> 

</div> 

$(function(){ 
$("#btn-accept").click(funcion(e)({ 
    e.preventDefault(); 
    $("form").attr("action", "/approve"); 
    $("form").submit(); 
})); 
$("#btn-decline").click(funcion(e)({ 
    e.preventDefault(); 
    $("form").attr("action", "/decline"); 
    $("form").submit(); 
})); 
});