net - redirect view mvc c#
Redirigir a otra página en ASP.NET MVC usando JavaScript/jQuery (6)
Quiero redirigir de una página a otra en ASP.NET MVC 3.0 usando JavaScript / jQuery / Ajax. En el botón clic evento he escrito código JavaScript como a continuación.
function foo(id)
{
$.post(''/Branch/Details/'' + id);
}
Mi código de controlador es así:
public ViewResult Details(Guid id)
{
Branch branch = db.Branches.Single(b => b.Id == id);
return View(branch);
}
Cuando hago clic en un botón, está llamando a la acción Detalles dentro de BranchController, pero no vuelve a la vista Detalles.
No recibí ningún error o excepción. Está mostrando el estado 200 OK en Firebug . ¿Qué hay de malo en mi código y cómo puedo redireccionar a la página de vista Detalles?
Esto se puede hacer usando una variable oculta en la vista y luego usando esa variable para publicar desde el código JavaScript.
Aquí está mi código en la vista
@Html.Hidden("RedirectTo", Url.Action("ActionName", "ControllerName"));
Ahora puede usar esto en el archivo JavaScript como:
var url = $("#RedirectTo").val();
location.href = url;
Funcionó como un encanto para mí. Espero que te ayude a ti también.
No se está suscribiendo a ninguna devolución de llamada correcta en su llamada de $ .post AJAX. Lo que significa que la solicitud se ejecuta, pero no haces nada con los resultados. Si desea hacer algo útil con los resultados, intente:
$.post(''/Branch/Details/'' + id, function(result) {
// Do something with the result like for example inject it into
// some placeholder and update the DOM.
// This obviously assumes that your controller action returns
// a partial view otherwise you will break your markup
});
Por otro lado, si quieres redirigir, no necesitas AJAX. Utiliza AJAX solo cuando desea permanecer en la misma página y actualizar solo una parte.
Entonces, si solo quieres redirigir el navegador:
function foo(id) {
window.location.href = ''/Branch/Details/'' + id;
}
Como nota al margen: nunca deberías codificar urls como esta. Siempre debe usar helpers url cuando maneje urls en una aplicación ASP.NET MVC. Asi que:
function foo(id) {
var url = ''@Url.Action("Details", "Branch", new { id = "__id__" })'';
window.location.href = url.replace(''__id__'', id);
}
Puedes usar:
window.location.href = ''/Branch/Details/'' + id;
Pero su código Ajax está incompleto sin éxito o funciones de error.
revisa el código a continuación, esto te ayudará por completo
window.opener.location.href = ''@ Url.Action ("Acción", "EventstController")'', window.close ();<script type="text/javascript">
function lnkLogout_Confirm()
{
var bResponse = confirm(''Are you sure you want to exit?'');
if (bResponse === true) {
////console.log("lnkLogout_Confirm clciked.");
var url = ''@Url.Action("Login", "Login")'';
window.location.href = url;
}
return bResponse;
}
</script>
// in the HTML code I used some razor
@Html.Hidden("RedirectTo", Url.Action("Action", "Controller"));
// now down in the script I do this
<script type="text/javascript">
var url = $("#RedirectTo").val();
$(document).ready(function () {
$.ajax({
dataType: ''json'',
type: ''POST'',
url: ''/Controller/Action'',
success: function (result) {
if (result.UserFriendlyErrMsg === ''Some Message'') {
// display a prompt
alert("Message: " + result.UserFriendlyErrMsg);
// redirect us to the new page
location.href = url;
}
$(''#friendlyMsg'').html(result.UserFriendlyErrMsg);
}
});
</script>