2012-03-28 14 views
10

でキャンセルボタン:私は形でキャンセルボタンを持つフォーム

@using (Html.BeginForm("ConfirmBid","Auction")) 
     { 
      some stuff ... 

        <input type="image" src="../../Content/css/img/btn-submit.png" class="btn-form" /> 
        <input type="image" src="../../Content/css/img/btn-cancel.png" class="btn-form" /> 

     } 

問題は、私はそれをクリックしたときに、このボタンは、特定のビューに行きたいです。これはどうすればいいですか?

答えて

25

キャンセルボタンを@ Html.ActionLinkヘルパーメソッドを使用してアンカータグとして変換し、リンクをボタンのように見せるcssクラスを適用し、そのリンクのコントローラアクションでは、特定のビュー。

@Html.ActionLink("Cancel","Index","Products",null, new { @class="clsButtonFake"}) 

または

使用2は、フォームのボタンを提出します。 1つは実際の送信用で、もう1つはキャンセル用です。あなたのコントローラーアクションでは、アクションメソッドと呼ばれるボタンをチェックしてください。 そうShyjuのappraochで、あなたはMVC ActionLinkのヘルパーに建てを使用here in this answer.

1
<a href="@Url.Action("CancelBid", "Auction")"><img src="../../Content/css/img/btn-submit.png" class="btn-form" /></a> 
2

それについての詳細を読むことができます。これを行うには、CSSを使って画像やアイコンを表示する必要があります。しかし、これははるかにキャッシュ可能です。特に、cssで画像にbase64文字列を使用する場合は特にそうです。

私はAdautoのアプローチが好きです。なぜなら、マークアップの制御をより強くするからです。 MVC Htmlヘルパーは素晴らしいですが、WebFormsの考え方にはまだ頭を浮かべているようです。「心配しないで、あなたのために世話をします」。

私が追加することの1つは、Url.Contentです。

<a href="@Url.Action("CancelBid", "Auction")"><img src="@Url.Content("~/Content/css/img/btn-submit.png" class="btn-form" /></a> 

コンテンツの場所を基準にして、コンテンツの場所を知る必要はありません。あなたがボタンとしての外観を保持したい場合は

+0

ありがとうございました!私は答えに集中し、残りの部分を忘れてしまった(Url.Content)。 – Adauto

2
<a href="/Auction/[ActionName]"> 
    <input type="image" src="@Url.Content("~/Content/css/img/btn-cancel.png")" class="btn-form" /> 
</a> 

、あなたはこのような何かを行うことができ:[ActionName]ご希望のビューを返します。アクションの名前です

<a href="/Auction/[ActionName]"> 
    <input type="button" value="Cancel"> 
</a> 

3

またはスタイルのボタンを提出:

<input type="submit" value="Save Form" name="Save" class="submit-button btn-form" /> 

その後のJavascriptのために、キャンセルボタン:

<input type="button" onclick="document.location.href('Home/Index')" value="Cancel" class="cancel-button btn-form" /> 
// Note: This avoids any of the validation that may happen in the model that 
// normally gets triggered with a submit 
4

は、これは私のボタンのHTMLです:次に

<button type="button" 
     class="btn btn-inverse" 
     id="cancel" 
     onclick="window.history.back()"> 
     <i class="icon-remove icon-large"></i> 
     <br />@Localization.Cancel 
</button> 

onclick属性をカスタマイズします私はこれを行ういくつかのビュー:

<script> 

    $(document).ready(function() 
    { 
     $("#cancel"). 
      attr("onClick", 
      "document.location.href='@Html.Raw(Url.Action("Index", "Standard", 
      new { ManualId = Model.ManualId, ChapterId = Model.ChapterId }))'"); 
    }); 

</script> 
+0

すごい!これは機能します。乾杯。 – Baahubali

+0

ローカライゼーションとは何ですか?キャンセルしますか? –

+1

フォームがリロードされると(ポストバック)window.history.back()は機能しません。フォームの以前のバージョンに戻ります。 –

3

ブラウザのいずれかで動作していた回答がたくさんありました。

これは、すべてで働いていた -

<input type="button" value="Cancel" onclick="location.href='@Url.Action("Index","Home")';"/> 
0

を私はキャンセルボタンを再利用することができるように、私はヘルパーを作ってしまいました。私はフォームに記入した後にキャンセルボタンをクリックした場合にjs confirmを追加しました。

@helper FormCancelButton(string cancelUrl) 
{ 
    <button type="button" class="btn" onclick="if (confirm('Cancel changes?')) location.href = '@cancelUrl';">Cancel</button> 
} 

私はそのようにようにそれを呼び出す:

@FormCancelButton(Url.Action("Index", "User")) 

あなたが本当に注目している場合、あなたは試みることができるとdetect the dirty state of the formを過ぎると、フォームが変更された場合のみ、確認ダイアログが表示されます。

関連する問題