Pour une raison quelconque, lorsque vous revenez sur un lien, c'est-à-dire que vous appuyez sur le bouton de retour de votre navigateur, cela m'amène au mauvais lien dans mon application. J'ai un chemin de:ASP.NET MVC - Liens arrière URL erronée
http://localhost:3340/Accounts/ContractsControl/GeneralContracts
et sur cette page je clique sur un lien qui me prend à
http://localhost:3340/Accounts/ContractsControl/GeneralContractView/223
maintenant quand je frappe le lien de retour, il me faut pour
http://localhost:3340/Accounts/ContractsControl/DataContracts
qui est la page où je suis allé à la page GeneralContracts
de. Je ne suis pas tout à fait sûr pourquoi cela se produit, mais cela signifie que les utilisateurs frappant le lien de retour (ce qui est très commun) seront pris à la mauvaise page.
Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Intranet.AreasLib;
namespace Intranet
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapAreas(
"{controller}/{action}/{id}",
"Intranet",
new[] { "Accounts", "Client" }
);
routes.MapRootArea(
"{controller}/{action}/{id}",
"Intranet",
new { controller = "Home", action = "Index", id = "" }
);
}
protected void Application_Start()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new AreaViewEngine());
RegisterRoutes(RouteTable.Routes);
}
}
}
FIXE
Le JavaScript j'avais été quelque chose que j'ai écrit il y a des siècles et juste bousculé là-dedans. Être en mesure de cliquer sur les lignes de table et de rediriger vers une autre page qui était comme suit:
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location.replace("GeneralContractView/" + $(this).attr('id'));
});
});
</script>
Bien que cela fonctionne, il devrait ressembler à ceci:
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location = "GeneralContractView/" + $(this).attr('id');
});
});
</script>
Parce que replace
ne fait pas le Identique à l'attribution d'un nouvel emplacement. Cela signifie que le référent d'URL est null. Leçon apprise.
Je ne pense pas que ce soit le navigateur, donc vous aurez besoin de poster les parties pertinentes de votre contrôleur (s). –
Pouvez-vous utiliser Fiddler pour surveiller le trafic http lorsque vous naviguez dans l'application et appuyez sur le bouton du navigateur arrière et peut-être coller des journaux ici? –