何らかの理由で、ブラウザで戻るボタンを押すと、アプリケーションの間違ったリンクに移動することがあります。私は、バックリンクを打ったとき、今ではASP.NET MVC - バックリンク間違ったURL
http://localhost:3340/Accounts/ContractsControl/DataContracts
に私を取る
http://localhost:3340/Accounts/ContractsControl/GeneralContracts
とそのページに私が
http://localhost:3340/Accounts/ContractsControl/GeneralContractView/223
に私を取るのリンクをクリックしてください:私はのパスを持っています
私は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は、私はとっくの昔に書いたものだったし、ちょうどそこに押し込みました。テーブルの行をクリックして、のようだった別のページにリダイレクトすることが可能であることは、次のとおりです。replace
は行いませんので
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location = "GeneralContractView/" + $(this).attr('id');
});
});
</script>
:
<script type="text/javascript">
$(document).ready(function() {
$('tr:not(:has(th))').click(function() {
window.location.replace("GeneralContractView/" + $(this).attr('id'));
});
});
</script>
この作品なくなり、それははこのようにする必要があります新しい場所を割り当てるのと同じです。これは、URLリファラーがnullであることを意味します。学んだ教訓。
私はそれがブラウザだとは思わないので、コントローラの関連する部分を投稿する必要があります。 –
アプリをナビゲートしてブラウザのバックボタンを押して、ここにいくつかのログを貼り付けるとき、Fiddlerを使ってhttpトラフィックを監視できますか? –