我正在使用.NET 3.5 SP1框架,并在我的应用程序中实现了URL路由.我收到了javascript错误:
Error: ASP.NET Ajax client-side framework failed to load.
Resource interpreted as script but transferred with MIME type text/html.
ReferenceError: Can't find variable: Sys
我相信这是因为我的路由选择了微软的axd文件而没有正确发送javascript.我做了一些研究,发现我可以使用Routes.IgnoreRoute
,这应该允许我忽略下面的axd:
Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
但是,当我将该行添加到我的Global.asax时,我收到此错误:
CS1061: 'System.Web.Routing.RouteCollection' does not contain a definition for 'IgnoreRoute' and no extension method 'IgnoreRoute' accepting a first argument of type 'System.Web.Routing.RouteCollection' could be found (are you missing a using directive or an assembly reference?)
我有System.Web.Routing
导入的命名空间,任何想法?
在某些.NET驱动的站点上,URL不以asp.net页面名称结尾,例如default.aspx,而是使用模式http://sitename.com或http://sitename.com/subdirectory/subdirectory.该站点被映射为根目录下的子目录,即./ tags,/ users,/ badges,URL分别是/ tags,/ users,/ badges.
Stack Overflow,使用一个特定的例子,使用表单的问题URL 如何获得像Stackoverflow这样的干净URL?.这是优化搜索引擎页面的好方法.
这是使用HTTP处理程序实现的吗?GET请求是否根据路径进行过滤,整个响应是根据问题ID在处理程序本身中形成的?还有其他人在乎推测吗?
我有一个URL模式映射到我的Django App中的自定义视图类,如下所示:
url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( ))
Run Code Online (Sandbox Code Playgroud)
问题是,我无法弄清楚如何从视图类中的URL模式字符串访问'pk',以便我可以根据其数据库ID检索特定的模型对象.我用Google搜索,查看了Django文档,搜索了Stack Overflow,我找不到满意的答案.
有人能告诉我吗?
我的应用程序中有公共区域和私有区域,我希望能够在公共视图中的任何位置显示登录模式对话框.模态应该有自己的路线.第二个用例是私有区域中的配置文件模式.
问题是当显示模态时,背景中的当前视图将消失,因为模态不是当前视图路径的子视图.
由于我不想为每个可能的视图路径添加相同的模态,因此问题是:是否可以将模态路由与其父路由分离并在应用程序中的任何位置显示它们而不进行主要内容呈现?对此最好的方法是什么?我发现了这个问题,但似乎不是同一个问题.
模态路线上的浏览器刷新在后台不会呈现任何内容,但这是我可以忍受的问题.
我刚刚开始使用ASP.NET MVC.
MapRoute和routes.Add有什么区别?我应该只使用MapRoute吗?我可以映射多条路线吗?哪个"地图"优先...那些你先打电话或最后打电话?
我希望能够为StackOverflow做类似的事情.但我希望URL符合这种模式:
"User/{domain}/{username}"将路由到UserController
以及执行典型ASP.NET MVC路由的所有其他请求.例如:
routes.MapRoute(
"Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
更新:
使用URL时:http:// localhost:3962/User/MYDOMAIN/BTYNDALL
我收到错误:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,其名称已更改,或暂时不可用.
这是我正在使用的代码:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"User",
"User/{domain}/{username}",
new { controller = "User", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
} …
Run Code Online (Sandbox Code Playgroud) 是否有可能以一种从将部署它的Web目录路径中抽象出来的方式开发Angular.js应用程序?
我试图将Angular.js应用程序放在Web服务器子目录http://example.com/myproject/中,但路由器将我重定向到Web服务器根目录 - http://example.com.
下面是我的Angular.js应用程序:
var myproject = angular.module('myproject', []);
myproject.config(function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {templateUrl: 'partials/index.html', controller: IndexCtrl}).
otherwise({redirectTo: '/'});
$locationProvider.html5Mode(true);
});
function IndexCtrl($scope, $location) {
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Node.js和Express编写API.我的API有以下格式的GET方法:
/api/v1/doSomething
/api/v1/doSomethingElse
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
var app = express();
...
var routes = require('./routes')
routes.attachHandlers(app, '/api/v1')
Run Code Online (Sandbox Code Playgroud)
...
module.exports.attachHandlers = function(app, context) {
//get a list of all the other .js files in routes
//for each route, require() it and call it myRoute
myRoute.attachHandlers(app, context)
}
Run Code Online (Sandbox Code Playgroud)
...
module.exports.attachHandlers = function(app, context) {
app.get(context + '/doSomething', doSomething)
app.get(context + '/doSomethingElse', doSomethingElse)
}
...
Run Code Online (Sandbox Code Playgroud)
实际上,我正在通过应用程序传递上下文路径/挂载点.但是,如果有人要编写如下的路线,那么上下文就会丢失:
app.get('/doFoo', foo)
Run Code Online (Sandbox Code Playgroud)
而不是将API的那部分安装在/api/v1/doFoo
它上面/doFoo
.我想避免像这样绕过上下文路径.
app.use支持在可选的装载路径上安装中间件.我在网上看到了使用安装路径安装整个Express应用程序的参考资料app.use
.这似乎是我想要做的事情,但我不知道该怎么做,或者它是否是我特定用例的最佳解决方案.
总结一下 - 我想默认安装带有特定前缀的app.get()路由.这样做的最佳方法是什么?
我已经阅读了很多关于如何自动编辑CSS/JS文件的文章 - 但是这些都没有提供在ASP.NET MVC中执行此操作的优雅方法.
此链接 - 如何强制浏览器重新加载缓存的CSS/JS文件? - 为Apache提供解决方案 - 但我有点困惑如何通过ASP.NET MVC实现这一点?
是否有人能够提供一些如何在IIS7和ASP.NET MVC上执行此操作的建议 - 以便CSS/JS文件自动在URL中插入版本号而不更改文件的位置?
也就是说,所以链接出来链接这个等大概是使用URL Rewrite或?
<link rel="stylesheet" href="/css/structure.1194900443.css" type="text/css" />
<script type="text/javascript" src="/scripts/prototype.1197993206.js"></script>
Run Code Online (Sandbox Code Playgroud)
谢谢
所以我正在编写一个框架,我想在其上建立一些我正在研究的应用程序(框架就在那里,所以我有一个可以使用的环境,以及一个让我可以使用单个系统的系统登录)
我想制作这个框架,并且它使用的应用程序使用资源导向架构.
现在,我想创建一个可由APP编写者扩展的URL路由类(也可能是CMS App用户可扩展的,但是未来的WAYYYY也是如此),我试图找出最好的方法来实现它其他应用如何做到这一点.
假设我希望REST端点看起来像这样:
/projects/
/projects/project_id
/projects/project_id/items/
/projects/project_id/items/item_id
Run Code Online (Sandbox Code Playgroud)
每个CRUD都有意义.例如,/ projects POST创建一个新项目,GET获取所有项目./ projects/project_id GET只获取一个项目.
项目是特定于项目的,因此我将它们放在project_id下,这是一个特定的项目.
有没有办法创建这种嵌套路线?
现在我有这样的事情:
server.route({
method: 'GET',
path: '/projects',
handler: getAllProjects
});
server.route({
method: 'GET',
path: '/projects/{project_id}',
handler: getOneProject
});
server.route({
method: 'GET',
path: '/projects/{project_id}/items/{item_id}',
handler: getOneItemForProject
});
server.route({
method: 'GET',
path: '/projects/{project_id}/items',
handler: getAllItemsForProject
})
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种方法将项目路线嵌套到项目路线中,以及进一步传递项目的能力.
有什么建议?
url-routing ×10
javascript ×3
.net ×2
asp.net-mvc ×2
node.js ×2
angularjs ×1
architecture ×1
asp.net ×1
axd ×1
c# ×1
django ×1
express ×1
hapijs ×1
httphandler ×1
ignoreroute ×1
php ×1
python ×1
react-router ×1
reactjs ×1
routing ×1
url ×1