我在表单中有一个取消按钮:
@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" />
}
问题是当我点击它时,我希望此按钮转到特定视图。我该怎么做?
答案 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");
}