gpt4 book ai didi

javascript - 如果 DurandalJS URL 无效,则不会重置它们

转载 作者:行者123 更新时间:2023-11-29 22:14:35 25 4
gpt4 key购买 nike

如果您加载 Durandal SPA 模板并尝试导航到伪造的 URL(通过向 URL 添加类似“assdf”的内容),该 url 将得到维护并且不会提供任何错误。如何改变这一点,以便无效的 URL 给用户一个错误页面?我认为错误总比让用户怀疑他们的 URL 是否有效要好。

最佳答案

你看过 handleInvalidRoute:

http://durandaljs.com/documentation/Router/

例如,在 Hot Towel 中,它用于向用户显示错误信息。

编辑:例如,我创建了一个基本的错误 View ,然后将它添加到 main.js 中,它似乎工作正常,但我认为我更喜欢咆哮类型的方法来向 Hot Towel 中的用户显示错误。

    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:如果您也担心普通网址(不是将由 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;
}
}
}

请参阅此处了解更完整的方法:How can I properly handle 404 in ASP.NET MVC?

关于javascript - 如果 DurandalJS URL 无效,则不会重置它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com