По какой-то причине при возврате ссылки, то есть нажатие кнопки «Назад» в вашем браузере приводит меня к неправильной ссылке в моем приложении. У меня есть путь:ASP.NET MVC - Обратные ссылки Неправильный URL
http://localhost:3340/Accounts/ContractsControl/GeneralContracts
и на этой странице, я нажимаю на ссылку, которая принимает меня
http://localhost:3340/Accounts/ContractsControl/GeneralContractView/223
теперь, когда я попал в обратную ссылку он принимает меня
http://localhost:3340/Accounts/ContractsControl/DataContracts
, который является страницей, я перешел на страницу GeneralContracts
. Я не совсем уверен, почему это происходит, но это означает, что пользователи, попавшие в обратную ссылку (что очень часто), попадают на неправильную страницу.
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);
}
}
}
FIXED
JavaScript у меня действительно было что-то я написал много лет назад и просто засунул туда. Будучи в состоянии нажать на строках таблицы и перенаправить на другую страницу, которая была, как следующим образом:
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location.replace("GeneralContractView/" + $(this).attr('id'));
});
});
</script>
В то время как это работает, он должен быть так:
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location = "GeneralContractView/" + $(this).attr('id');
});
});
</script>
Поскольку replace
не делать так же как назначение нового местоположения. Это означает, что URL-адрес referrer равен NULL. Урок выучен.
Я не думаю, что это браузер, поэтому вам нужно будет опубликовать соответствующие части вашего контроллера (ов). –
Можете ли вы использовать Fiddler для отслеживания трафика HTTP при навигации по приложению и нажмите кнопку назад браузера и, возможно, вставьте несколько журналов здесь? –