2011-09-14 44 views
0

Profile.cshtmlに保存とキャンセルという2つのボタンがあります。今私の方法は次のようなものです:保存してキャンセルボタンをフォームに投稿

[HttpPost] 
public ActionResult Profile() 
{ 
    //code.. 
} 

これはレコードをデータベースに保存します。しかし、問題は、キャンセルもここに投稿されるため、レコードはデータベースに保存されるためです。これをどうすれば処理できますか?

+0

?保存してキャンセルボタンのコードを投稿できますか? – Ali

答えて

1

私は、多くの場合、ビューに渡されたのviewmodelクラスを使用して、私が持っているのviewmodelに:

public string submit { get; set; } 

public bool SaveButtonClicked() 
{ 
    return this.submit.Equals("save"); 
} 

public bool CancelButtonClicked() 
{ 
    return this.submit.Equals("cancel"); 
} 

次にコントローラ

[HttpPost] 
public ActionResult Save(MyViewModel inputViewModel) 
{ 
    if(inputViewModel.SaveButtonClicked()) {} 

    blah....... 

} 

に私の見解は、この

@using (Html.BeginForm()) 
{ 

    // Other stuff. 
    <input type="submit" name="submit" value="Save" /> 
    <input type="submit" name="submit" value="Cancel" /> 
} 
のように見えます

これは本当にうまく動作します。送信ボタンに同じ名前を使用させると、いずれかのボタンを押すと、その名前がviewmodelのsubmitプロパティに渡されます。名前が重複していると悪い考えがあるのか​​どうかはわかりませんが、私のニーズには問題ありません。

+0

まさに私が探していたものです。おかげでジェイソン – Jaggu

+0

probs、私は助けることができるうれしい:) –

0

キャンセルボタンのように聞こえるのは、type属性がsubmitに設定されているようです。これにより、保存ボタンを押しているかのようにフォームが送信されます。

「キャンセル」ボタンには何をしたいのですか?フォームを終了しない場合には、別のページに移動するボタンを作成する方が良いかもしれません。そうでない場合は、ActionResultをポイントする必要がある場合は、リダイレクトを行う必要があります。

質問があればお気軽にお問い合わせください。

0

通常、フォームを送信するには[保存]ボタンがあり、キャンセルボタン "は、あなたのインデックスなどを指すアクションリンクです。

+0

私はアクションリンクをしたくありません。マイセーブはボタンで、キャンセルボタンもあります。 – Jaggu

+0

あなたはCSSのボタンのような "リンク"の外観を持つことができます - なぜあなた自身の頭の中で自分自身を撃って、ビューがうまく動作するようにコントローラーを変更して、それが所属するビューで問題を解決できるか? – Carsten

2

ビューでは、各フォームのアクションがコントローラー内の関連するアクションメソッドにポストする2つのフォーム(各ボタンに1つ)があります。例えば、ビュー内:

コントローラで次に
@using (Html.BeginForm("Save", "Profile")) 
{ 
    <input type="submit" value="Save"/> 
} 

@using (Html.BeginForm("Cancel", "Profile")) 
{ 
    <input type="submit" value="Cancel"/> 
} 

:フォームの送信ボタンをキャンセルする方法

[HttpPost] 
public ActionResult Save() 
{ 
    ... 
} 

[HttpPost] 
public ActionResult Cancel() 
{ 
    ... 
} 
+0

ニースソリューション:) – Jaggu

+0

これはうまく動作します。 – itsmatt

関連する問題