Profile.cshtmlに保存とキャンセルという2つのボタンがあります。今私の方法は次のようなものです:保存してキャンセルボタンをフォームに投稿
[HttpPost]
public ActionResult Profile()
{
//code..
}
これはレコードをデータベースに保存します。しかし、問題は、キャンセルもここに投稿されるため、レコードはデータベースに保存されるためです。これをどうすれば処理できますか?
Profile.cshtmlに保存とキャンセルという2つのボタンがあります。今私の方法は次のようなものです:保存してキャンセルボタンをフォームに投稿
[HttpPost]
public ActionResult Profile()
{
//code..
}
これはレコードをデータベースに保存します。しかし、問題は、キャンセルもここに投稿されるため、レコードはデータベースに保存されるためです。これをどうすれば処理できますか?
私は、多くの場合、ビューに渡されたの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
プロパティに渡されます。名前が重複していると悪い考えがあるのかどうかはわかりませんが、私のニーズには問題ありません。
まさに私が探していたものです。おかげでジェイソン – Jaggu
probs、私は助けることができるうれしい:) –
キャンセルボタンのように聞こえるのは、type
属性がsubmit
に設定されているようです。これにより、保存ボタンを押しているかのようにフォームが送信されます。
「キャンセル」ボタンには何をしたいのですか?フォームを終了しない場合には、別のページに移動するボタンを作成する方が良いかもしれません。そうでない場合は、ActionResultをポイントする必要がある場合は、リダイレクトを行う必要があります。
質問があればお気軽にお問い合わせください。
ビューでは、各フォームのアクションがコントローラー内の関連するアクションメソッドにポストする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()
{
...
}
?保存してキャンセルボタンのコードを投稿できますか? – Ali