小编Bas*_*sem的帖子

加载requireJS模块内联HTML正文?

我正在将RequireJS集成到CMS中,因此我将其放在页面模板的底部:

<html>
<body>
  {Placeholder1}
  <script src="scripts/require.js" data-main="scripts/main"></script>
  {Placeholder2}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后在每个页面上,我想创建一个利用RequireJS的函数.所以我尝试将它放在页面的底部:

<html>
<body>
    <h1>Home</h1>
    <div class="slider">Slider content</div>

    <script src="scripts/require.js" data-main="scripts/main"></script>

    <script type="text/javascript">
      require([
        'jquery',
        'utils',
        'slider'
      ], function ($, utils, slider) {
        slider.start();
      });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我在jquery,utils和slider js文件上获得404.好像它没有读我的main.js配置我:

require.config({
    paths: {
        jquery: 'libs/jquery-1.8.1.min',
        utils: 'libs/utils',
        slider: 'libs/jquery.slider.min'
    },
    shim: {
        slider: ['jquery']
    }
});

require([ 'utils' ], function (utils) {
    utils.init();
});
Run Code Online (Sandbox Code Playgroud)

我尝试在页面头部加载RequireJS和main,但是这样得到了不一致的结果.有时jquery,utils和slider会及时加载,有时则不加载.就好像页面底部的内联"require"不知道页面上的主要RequireJS或依赖规则,但是我的断点在main.js中命中,所以我知道它正被调用.是因为main.js是异步加载的,但页面底部的内联"require"块是否在页面渲染中加载?我该如何解决这个问题?

我以前成功使用过RequireJS但没有使用CMS.我总是使用"define"并且总是异步调用模块,但是不必像这样调用RequireJS函数内联.有关正确方法的任何想法吗?

javascript asynchronous requirejs js-amd

13
推荐指数
2
解决办法
2万
查看次数

如何修改框架的默认Web API路由?

如果URL中没有提供任何操作,Web API似乎有一个内置的默认逻辑,可以使用HTTP Verb作为操作名称.例如,我有这条路线:

        config.Routes.MapHttpRoute(
            name: "DefaultApiController",
            routeTemplate: "api/{controller}"
        );
Run Code Online (Sandbox Code Playgroud)

以下是我的行动:

    public IEnumerable<Conference> Get()
    {
        ...
    }

    [ActionName("current")]
    public IEnumerable<Conference> GetCurrent()
    {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

当我使用GET动词转到〜/ Conferences时,它会转到"Get()"动作.如果使用POST动词,它将带您进入"发布([FromBody]会议值)"动作......等等.但是当你试图去〜/ Conferences/GetCurrent时会发生冲突(即使我的[ActionName("current")]在上面):

找到了与请求匹配的多个操作:System.Collections.Generic.IEnumerable 1[MyApp.Models.Conference] Get() on type MyApp.Api.ConferencesController System.Collections.Generic.IEnumerable1 [MyApp.Models.Conference]类型为MyApp.Api.ConferencesController的GetCurrent()

这意味着框架使用StartsWith而不是Equal来确定默认操作.在将动词与动作匹配时,它也会忽略ActionName属性.

我的问题是如何使框架的默认操作完全匹配动词,而不是使用StartsWith逻辑?GET动词应仅匹配Get()动作,而不是Get(),GetCurrent()GetPast()等(特别是当它忽略ActionName属性时).

编辑 为简单起见,我只展示了上面的一条路线.我认为如果我展示所有仍在选秀中的路线可能会有所帮助.我正在尝试获得一个完整的REST API,同时仍然有空间添加我自己的自定义操作:

    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApiControllerActionId",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: null,
            constraints: new { action = @"^[a-zA-Z]+$", id = @"^\d+$" } // action must start with character
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApiControllerActionName",
            routeTemplate: "api/{controller}/{action}/{name}",
            defaults: null,
            constraints: …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-web-api-routing

8
推荐指数
1
解决办法
6293
查看次数

相对表单操作解析为绝对URL?

我试图获取放置在表单操作中的实际字符串.问题是,当我这样做时,即使相对路径在HTML中,action属性也会解析为绝对路径.如何获取action属性中的实际字符串?

以下是我所指的示例:http: //jsfiddle.net/MSY4s/

javascript forms jquery dom

3
推荐指数
1
解决办法
7096
查看次数

拆分泛型类型的字符串扩展?

我想创建一个Split扩展,允许我将任何字符串拆分为强类型列表.我有一个良好的开端,但由于我将在许多项目中重复使用它,我希望从社区获得输入(因此您可以将其添加到您自己的工具箱中;)来自这里的任何想法?

public static class Converters
{
    public static IEnumerable<T> Split<T>(this string source, char delimiter)
    {
        var type = typeof(T);

        //SPLIT TO INTEGER LIST
        if (type == typeof(int))
        {
            return source.Split(delimiter).Select(n => int.Parse(n)) as IEnumerable<T>;
        }

        //SPLIT TO FLOAT LIST
        if (type == typeof(float))
        {
            return source.Split(delimiter).Select(n => float.Parse(n)) as IEnumerable<T>;
        }

        //SPLIT TO DOUBLE LIST
        if (type == typeof(double))
        {
            return source.Split(delimiter).Select(n => double.Parse(n)) as IEnumerable<T>;
        }

        //SPLIT TO DECIMAL LIST
        if (type == typeof(decimal))
        {
            return source.Split(delimiter).Select(n => decimal.Parse(n)) …
Run Code Online (Sandbox Code Playgroud)

.net c# extension-methods type-conversion c#-4.0

1
推荐指数
2
解决办法
1526
查看次数