c# - para - Botón Cancelar en forma
codigo para guardar un archivo en visual basic (8)
Tengo un botón cancelar en un formulario:
@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" />
}
El problema es que quiero que este botón vaya a una vista particular cuando hago clic en él. ¿Cómo hago esto?
Entonces, con la aplicación de Shyju, utilizas la ayuda incorporada de MVC ActionLink. Al hacer esto, necesitarás tener cualquier imagen o ícono hecho a través de CSS. Sin embargo, esto es mucho más cachable, especialmente si usa cadenas de base64 para sus imágenes en css.
Me gusta el enfoque de Adauto porque te da mucho más control sobre el marcado. Los MVC Html Helpers son agradables, pero todavía parecen tener sus mentes en la mentalidad de WebForms de "no te preocupes, nosotros nos ocuparemos de eso".
Lo único que agregaría es Url.Content.
<a href="@Url.Action("CancelBid", "Auction")"><img src="@Url.Content("~/Content/css/img/btn-submit.png" class="btn-form" /></a>
Nunca es realmente una buena idea hacer que sus puntos de vista tengan que conocer la ubicación del contenido relativo a su ubicación.
<a href="@Url.Action("CancelBid", "Auction")"><img src="../../Content/css/img/btn-submit.png" class="btn-form" /></a>
<a href="/Auction/[ActionName]">
<input type="image" src="@Url.Content("~/Content/css/img/btn-cancel.png")" class="btn-form" />
</a>
si desea conservar su aspecto como un botón, podría hacer algo como esto:
<a href="/Auction/[ActionName]">
<input type="button" value="Cancel">
</a>
donde [ActionName]
Nombre de la acción [ActionName]
es el nombre de la acción que devolverá su vista deseada.
O un botón de envío con estilo:
<input type="submit" value="Save Form" name="Save" class="submit-button btn-form" />
Luego Javascript para cancelar el botón:
<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
Este es mi botón 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>
Luego, para personalizar el atributo onclick
en algunas vistas, hago esto:
<script>
$(document).ready(function ()
{
$("#cancel").
attr("onClick",
"document.location.href=''@Html.Raw(Url.Action("Index", "Standard",
new { ManualId = Model.ManualId, ChapterId = Model.ChapterId }))''");
});
</script>
Muchas de las respuestas funcionaron en cualquiera de los navegadores, Chrome o es decir, pero no todas.
Esto funcionó en todos -
<input type="button" value="Cancel" onclick="location.href=''@Url.Action("Index","Home")'';"/>
O puede convertir el botón Cancelar como una etiqueta ancla con el método de ayuda @ Html.ActionLink y aplicar una clase css que hace que el enlace se vea como un botón y luego en la acción del controlador para ese enlace, puede devolver la vista específica.
@Html.ActionLink("Cancel","Index","Products",null, new { @class="clsButtonFake"})
o
Use 2 botones de enviar en el formulario. Uno para el envío real y el otro para la cancelación. y en la acción de su controlador, verifique qué botón llamó al método de acción. Puedes leer más sobre esto aquí en esta respuesta.
Terminé haciendo una ayuda para poder reutilizar el botón cancelar. Agregué una confirmación js en caso de que las personas hagan clic en el botón Cancelar por accidente después de completar el formulario.
@helper FormCancelButton(string cancelUrl)
{
<button type="button" class="btn" onclick="if (confirm(''Cancel changes?'')) location.href = ''@cancelUrl'';">Cancel</button>
}
Entonces lo llamo así:
@FormCancelButton(Url.Action("Index", "User" ))
Si está realmente interesado, intente detectar el estado sucio del formulario y solo muestre el diálogo de confirmación si el formulario ha sido modificado.