Javascript 如果DurandalJS URL无效,则不会重置它们
如果加载Durandal SPA模板并尝试导航到伪造的URL(通过在URL中添加类似“assdf”的内容),则会维护URL,并且不会提供任何错误。如何改变这一点,使无效的URL给用户一个错误页面?我认为一个错误比让用户怀疑他们的URL是否有效要好 您看过HandleInValidulote吗: 例如,在热毛巾中,它用于向用户显示错误 编辑:例如,我创建了一个基本的错误视图,然后将其添加到main.js中,它似乎可以工作,但我认为我更喜欢咆哮式方法,而不是用热毛巾向用户显示错误Javascript 如果DurandalJS URL无效,则不会重置它们,javascript,asp.net-web-api,single-page-application,durandal,Javascript,Asp.net Web Api,Single Page Application,Durandal,如果加载Durandal SPA模板并尝试导航到伪造的URL(通过在URL中添加类似“assdf”的内容),则会维护URL,并且不会提供任何错误。如何改变这一点,使无效的URL给用户一个错误页面?我认为一个错误比让用户怀疑他们的URL是否有效要好 您看过HandleInValidulote吗: 例如,在热毛巾中,它用于向用户显示错误 编辑:例如,我创建了一个基本的错误视图,然后将其添加到main.js中,它似乎可以工作,但我认为我更喜欢咆哮式方法,而不是用热毛巾向用户显示错误 app.
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处理的散列URL),那么您需要在durandal之外处理它。i、 e.您可以在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;
}
}
}
请参见此处了解更完整的方法:请参见编辑以处理“普通”URL和hased URL的此类问题。非常感谢互斥。现在尝试你对客户端的建议,但我遇到了一些其他问题:我会继续尝试并发布更新/回复