我正在将angularJS与一起使用ASP.NET
。当我运行Web应用程序时,所有链接均正常工作,并且没有500错误。
但是,当我刷新页面时,出现了500条这样的错误:
找不到部分视图“联系人”,或者没有视图引擎支持搜索到的位置。搜索了以下位置:
我正在使用angularJS控制器从./templates文件夹中加载模板,而angularJS做得很好。
有人知道为什么我会收到此错误以及如何解决该错误吗?
在View文件夹中也只有Index.cshtml文件,因为我从./templates目录加载模板,这是RouteConfig.cs代码:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("templates", "templates/{action}.html",
new { controller = "Home", action = "Templates", name = "" }
);
routes.MapRoute("contacts","contacts",
new { controller = "Home", action = "Contacts", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
控制器类:
public ActionResult Index()
{
return View();
}
// ActionResult prikazan ispod služi da bi angularJS
// mogao lodati HTML template u template folderu
public ActionResult Contacts()
{
return PartialView();
}
public ActionResult Templates()
{
return PartialView();
}
这是angularJS路由配置:
app.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/contacts',
{
controller: 'ContactsController',
templateUrl: 'templates/contacts.html'
})
.when('/add-contact',
{
controller: 'ContactAddController',
templateUrl: 'templates/addContact.html'
})
.when('/edit-contact/:contactId',
{
controller: 'ContactEditController',
templateUrl: 'templates/editContact.html'
})
.when('/display-contact/:contactId',
{
controller: 'ContactDetailsController',
templateUrl: 'templates/displayContact.html'
})
.when('/bookmarked-contacts',
{
controller: 'ContactsController',
templateUrl: 'templates/bookmarkedContacts.html'
})
.when('/search-contacts',
{
controller: 'SearchContactsController',
templateUrl: 'templates/searchContacts.html'
})
.otherwise({ redirectTo: '/contacts' });
$locationProvider.html5Mode(true);
});
该问题与不当放置server
侧有关。首先尝试关闭html5
模式
//$locationProvider.html5Mode(true);
$locationProvider.html5Mode({enabled: false});
并在刷新后检查是否一切正常。这应该。
像这样更改路由:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("fonts*.woff");
routes.IgnoreRoute("*.js");
routes.IgnoreRoute("*.html");
routes.IgnoreRoute("*.css");
routes.IgnoreRoute("api/*");
routes.MapRoute(
name: "Default",
url: "{dummyController}/{dummyAction}/{dummy1}/{dummy2}/{dummy3}",
defaults: new { controller = "Home", action = "Index"
, dummyController = UrlParameter.Optional
, dummyAction = UrlParameter.Optional
, dummy1 = UrlParameter.Optional
, dummy2 = UrlParameter.Optional
, dummy3 = UrlParameter.Optional
}
);
这应该做我们需要的。每当服务器有任何异常时:
/api/
(ASP.NET Web API)也被跳过/somestuff/somepart
视为Home/Index
此设置url: "{dummyController}/{dummyAction}/{id}",
可以进行以上操作。来自html5mode的任何部分都被视为路由键“
dummyController”,“ dummyAction”,而Home和Index在默认情况下作为控制器和操作传递:new { controller = "Home", action = "Index" ...
并且由于您的应用程序期望路由的某些部分,因此您应该像这样使用它:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("fonts*.woff");
routes.IgnoreRoute("*.js");
routes.IgnoreRoute("*.html");
routes.IgnoreRoute("*.css");
routes.IgnoreRoute("api/*");
// keep this application special settings
routes.MapRoute("templates", "templates/{action}.html",
new { controller = "Home", action = "Templates", name = "" }
);
routes.MapRoute("contacts","contacts",
new { controller = "Home", action = "Contacts", id = UrlParameter.Optional }
);
// this should do the job on F5
routes.MapRoute(
name: "Default",
url: "{dummyController}/{dummyAction}/{dummy1}/{dummy2}/{dummy3}",
defaults: new { controller = "Home", action = "Index"
, dummyController = UrlParameter.Optional
, dummyAction = UrlParameter.Optional
, dummy1 = UrlParameter.Optional
, dummy2 = UrlParameter.Optional
, dummy3 = UrlParameter.Optional
}
);
也检查一下
router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-
with-html5mode)
任何关于如何在codenameone中触发Pull以刷新的代码示例都将受到欢迎。添加pull来刷新很简单,但我有一个用例,我需要pull来刷新在表单的post显示后自动完成。
问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A
问题内容: 我是新手。我正在使用获取对象列表并将其显示在第一页上的服务。然后根据单击的对象,在下一页上设置选项卡标题。但是,当我刷新页面时,列表的范围丢失了,并且选项卡头引发了异常,导致页面无法显示信息。即使刷新第二页,是否可以保留上一个屏幕上单击了哪个对象的信息? 问题答案: 您可以使用角度本地存储 角度本地存储 示例如何使用它: 使用本地存储的示例
本文向大家介绍AngularJS实现页面定时刷新,包括了AngularJS实现页面定时刷新的使用技巧和注意事项,需要的朋友参考一下 有时我们在前端可能会有这样的需求: 1、每隔一段时间刷新一下页面中的数据 2、根据需要可以暂停和启用刷新 接下来我们就来看下AngularJS的实现方法: 首先我们了解到AngularJS中$interval可以用来处理间歇性处理一些事情,那么我们的间歇性刷新就使用i
从…起https://spring.io/guides/gs/centralized-configuration/: 您可以强制bean刷新其配置(即从Config Server中提取更新的值),方法是使用Spring Cloud Config@RenewScope注释MessageRestController,然后触发刷新事件。 我们如何触发此刷新事件(对于带有
问题内容: 我知道有一些关于该主题的帖子。我已经阅读了大多数内容,但是我认为我不够熟练,无法理解应该怎么做。 我有一个AngularJS 1.0.7 Web应用程序。我刚刚将其配置为html5Mode以美化我的URL。我的网址现在看起来不错,但是出现了一个新的问题,我在更改之前没有遇到过。首次加载索引页面时,可以毫无问题地对其进行刷新。但是,如果我导航到示例/ about中的其他页面,然后刷新页面