表单中的取消按钮

时间:2012-03-28 18:14:42

标签: c# asp.net-mvc-3 button razor cancel-button

我在表单中有一个取消按钮:

@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" />

        }

问题是当我点击它时,我希望此按钮转到特定视图。我该怎么做?

9 个答案:

答案 0 :(得分:27)

您可以使用@ Html.ActionLink帮助方法将取消按钮转换为锚标记,并应用一个css类,使链接看起来像一个按钮,然后在该链接的控制器操作中,您可以返回特定的图。

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

在表单中使用2个提交按钮。一个用于真实提交,一个用于取消。并在您的控制器操作中,检查称为操作方法的按钮。  您可以阅读更多相关信息here in this answer.

答案 1 :(得分: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>

答案 2 :(得分:4)

很多答案都适用于任何一种浏览器,即chrome,但不是全部。

这在所有方面都有效 -

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

答案 3 :(得分: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 :(得分:2)

因此,使用Shyju的appraoch,您可以使用内置的MVC ActionLink助手。这样做,你需要通过css完成任何图像或图标。但是,这更易于安装,特别是如果您在css中使用base64字符串作为图像。

我喜欢Adauto的方法,因为它可以让您更好地控制标记。 MVC Html助手很不错,但是他们似乎仍然对WebForms的思维方式感到满意,“不要担心它,我们会为你照顾它。”

我要添加的一件事是Url.Content。

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

让您的观点必须知道内容相对于其位置的位置绝不是一个好主意。

答案 5 :(得分:2)

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

如果您想将其外观保留为按钮,则可以执行以下操作:

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

其中[ActionName]是将返回所需视图的操作的名称。

答案 6 :(得分:1)

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

答案 7 :(得分:0)

我最终做了一个帮手,所以我可以重复使用取消按钮。我添加了一个js确认,以防人们在填写表格后意外点击取消按钮。

@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,只有在表格被更改后才显示确认对话框。

答案 8 :(得分:-1)

     <asp:Button runat="server" class="btn btn-danger"
       CausesValidation="false" onclick="Cancel_Click" Text="Cancel"/>


     protected void Cancel_Click(object sender, EventArgs e)
     {
        Response.Redirect("Test.aspx");
     }