14

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

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

        }

问题是我希望此按钮在单击时转到特定视图。我该怎么做呢?

4

9 回答 9

28

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

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

或者

在表单中使用 2 个提交按钮。一个用于实际提交,一个用于取消。并在您的控制器操作中,检查哪个按钮调用了操作方法。您可以在此答案中阅读更多相关信息。

于 2012-03-28T18:20:31.900 回答
5

很多答案在任何一个浏览器、chrome 或 ie 中都有效,但不是全部。

这在所有工作 -

<input type="button" value="Cancel" onclick="location.href='@Url.Action("Index","Home")';"/>
于 2014-07-08T02:07:56.087 回答
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>
于 2013-06-30T08:10:59.540 回答
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
于 2012-07-05T16:17:22.190 回答
2

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

我喜欢 Adauto 的方法,因为它可以让您更好地控制标记。MVC Html Helpers 很不错,但他们似乎仍然抱着“别担心,我们会为你处理”的 WebForms 心态。

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

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

让您的视图必须知道内容相对于其位置的位置从来都不是一个好主意。

于 2012-03-28T18:32:29.043 回答
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>

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

于 2012-03-28T18:51:55.853 回答
1
<a href="@Url.Action("CancelBid", "Auction")"><img src="../../Content/css/img/btn-submit.png" class="btn-form" /></a>
于 2012-03-28T18:26:02.187 回答
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" ))

如果您真的很热衷,您也可以尝试检测表单的脏状态,并且仅在表单已更改时才显示确认对话框。

于 2016-12-19T05:26:53.350 回答
-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");
     }
于 2018-07-30T06:28:16.917 回答