Durandal SPA テンプレートをロードして、(URL に「assdf」などを追加することによって) 偽の URL に移動しようとしても、URL は維持され、エラーは提供されません。無効な URL がユーザーにエラー ページを表示するように、これをどのように変更できますか? URL が機能するかどうか疑問に思うユーザーを放置するよりは、エラーの方がよいと思います。
質問する
366 次
1 に答える
2
handleInvalidRoute を見たことがありますか:
http://durandaljs.com/documentation/Router/
たとえばホット タオルでは、ユーザーにエラー トーストを表示するために使用されます。
編集:たとえば、基本的なエラー ビューを作成し、これを main.js に追加すると、動作するように見えますが、ホット タオルでユーザーにエラーを表示するには、うなり声タイプのアプローチを好むと思います。
app.start().then(function() {
//Replace 'viewmodels' in the moduleId with 'views' to locate the view.
//Look for partial views in a 'views' folder in the root.
viewLocator.useConvention();
// ** ADDED **
router.handleInvalidRoute = function (route, params) {
router.navigateTo('#/error');
};
//configure routing
router.useConvention();
router.mapNav('welcome');
router.mapNav('flickr');
// ** ADDED **
router.mapRoute('error', 'viewmodels/error', 'error', false);
app.adaptToDevice();
//Show the app by setting the root view model for our application with a transition.
app.setRoot('viewmodels/shell', 'entrance');
});
EDIT2: 通常の URL (durandal\sammy によって処理されるハッシュ化されたものではない) も心配している場合は、durandal の外部で処理する必要があります。つまり、global.asax に次のようなものを入れることができます。
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
var httpException = exception as HttpException;
if(httpException != null) //It's an Http Exception, Let's handle it.
{
switch (httpException.GetHttpCode())
{
case 404:
// Page not found.
Response.Redirect("~/#/error");
break;
}
}
}
より完全なアプローチについては、こちらを参照してください: ASP.NET MVC で 404 を適切に処理するにはどうすればよいですか?
于 2013-04-14T22:38:20.577 に答える