小编Ben*_*ter的帖子

将功能分支移动到另一个分支

我们features/foo创建了一个master尚未合并的功能分支。

最近我们创建了一个新dev分支,以便master仅包含版本。

因此我需要features/foo转向dev.

我是否需要dev为该功能创建一个新分支,然后推送到该分支,或者是否有更好的方法?

git

5
推荐指数
1
解决办法
3034
查看次数

使用Func的责任链

我正在创建一个责任链管道,使用管道System.Func<T, T>中的每个函数保存对下一个函数的引用.

在构建管道时,我无法通过引用传递内部函数,因为它会因管道函数的重新分配而抛出StackOverflowException,例如:

Func<string, Func<string, string>, string> handler1 = (s, next) => {
    s = s.ToUpper();
    return next.Invoke(s);
};

Func<string, string> pipeline = s => s;
pipeline = s => handler1.Invoke(s, pipeline);

pipeline.Invoke("hello"); // StackOverFlowException
Run Code Online (Sandbox Code Playgroud)

我可以用一个闭包解决这个问题:

Func<string, Func<string, string>, string> handler1 = (s, next) => {
    s = s.ToUpper();
    return next.Invoke(s);
};

Func<Func<string, string>, Func<string, string>> closure = 
    next => s => handler1.Invoke(s, next);

Func<string, string> pipeline = s => s;
pipeline = closure.Invoke(pipeline);

pipeline.Invoke("hello");
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有更有效的方法来构建这个函数链,也许使用表达式?

c# chain-of-responsibility

5
推荐指数
1
解决办法
383
查看次数

ASP.NET MVC主页数据

我使用ASP.NET MVC越多,我就越喜欢它.但是,在母版页上显示模型数据的情况下,似乎有几种方法可以实现.我不确定最好的解决方案.

我的例子是一个商业网站,我想在每个页面上输出产品类别列表,并显示访客购物车的状态.

在asp.net Web表单中,我通常会使用用户控件执行此操作,每个用户控件都执行自己的数据绑定以检索所需的数据.

在MVC中,所有数据都应由控制器传递.

因此,对于类别,最简单的解决方案似乎是在控制器操作中的View数据中传递它:

ViewData["Categories"] = _service.GetCategories();
Run Code Online (Sandbox Code Playgroud)

但是,为每个操作执行此操作并不是很干,所以在本文之后我创建了一个基本控制器,它将所需的数据添加到我的ViewData:

    public class AppController : Controller
{
    IAppService _service;

    public AppController() { }
    public AppController(IAppService appService)
    {
        _service = appService;
        SetSiteData();
    }

    private void SetSiteData()
    {
        ViewData["Categories"] = _service.GetCategories();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我为ViewMasterPage创建了一个扩展:

        public static void RenderCategoryList(this ViewMasterPage pg) {
        pg.Html.RenderPartial("CategoryList", pg.ViewData["Categories"]);
    }
Run Code Online (Sandbox Code Playgroud)

在我的MasterPage中:

        <div>
        <%this.RenderCategoryList(); %>
    </div>
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常干净的方法.但是,这是最好的方法,因为我也看到了为MasterPage创建ViewModel的建议.我可以看到,随着ViewModel数据的增长,这可能是一个更好的解决方案.

关于购物车状态,我想我会做类似的事情但不确定RenderAction是否更合适(何时使用RenderAction与RenderPartial与ASP.NET MVC).谢谢,本

asp.net-mvc master-pages

4
推荐指数
1
解决办法
2306
查看次数

asp.net mvc数据注释的默认值

是否存在可在ASP.NET MVC中使用的默认值属性,以便为输入设置默认属性,即创建表单.

System.ComponentModel中有这样的属性,但它没有任何效果.

谢谢Ben

asp.net-mvc

4
推荐指数
1
解决办法
8287
查看次数

结束System.Threading.Tasks.Task的正确方法是什么?

按照标题真的.

我有一个长时间运行的任务,轮询一个消息队列.

偶尔我可能希望停止任务,做一些工作然后重新开始.这样做的正确方法是什么?

.net multithreading task

4
推荐指数
1
解决办法
2817
查看次数

OAuth 2.0 重定向 URL 中是否支持查询字符串参数?

我想确保我正确理解了(草案)规范,其中指出:

重定向端点 URI 必须是
[RFC3986] 第 4.3 节定义的绝对 URI 。端点 URI 可以包含一个
“application/x-www-form-urlencoded”格式
([W3C.REC-html401-19991224])查询组件([RFC3986] 第 3.4 节),在添加附加查询参数时必须保留该组件。的
端点URI必须不包括一个片段组成。

我问的原因是 Google 或 Facebook 似乎都没有保留任何查询字符串。

oauth-2.0

4
推荐指数
1
解决办法
3712
查看次数

相对路径正则表达式

我们的 Web 应用程序允许用户指定他们自己的“slugs”,其中可以包含相对路径,例如 /somedir/some-file.htm。

在我们的路由配置中,我们需要确保只支持有效的 slug(带段)。

我使用的正则表达式是:

(^[a-z0-9])([a-z0-9-/]+)([a-z0-9])$
Run Code Online (Sandbox Code Playgroud)

这意味着:

  • 有效的 slug 将匹配例如 some-file.htm
  • 带有段(相对路径)的有效 slug 将匹配例如 somedir/subdir/some-file.htm
  • 绝对 URL 将不匹配,例如 /somedir/some-file.htm
  • 尾随 / 或 - 将不匹配,例如 -slug-

不幸的是,这也意味着双斜线将匹配例如 somedir//subdir//some-file.htm 因为我的表达式允许一个或多个斜线。

如何更改它以允许段之间有零个或多个斜线。

我认为:

(^[a-z0-9])(/?[a-z0-9-]+/?)([a-z0-9])$
Run Code Online (Sandbox Code Playgroud)

会起作用,但不会。

regex

4
推荐指数
1
解决办法
1万
查看次数

如何持久化来自远程客户端的 JobDataMap 更改

我正在为 Quartz.NET 开发一个基本的 Web 客户端,它支持在运行时修改作业的 JobDataMap。

我的工作装饰有以下属性,我认为这些属性是使工作有状态所必需的:

[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class SampleTenantJob : IJob { ... }
Run Code Online (Sandbox Code Playgroud)

在运行时,我执行以下代码但 JobDataMap 没有持久化:

    public void UpdateJobProperties(string jobName, string groupName, IDictionary<string, object> properties)
    {
        IJobDetail job;
        if (!TryGetJob(jobName, groupName, out job))
            return;

        foreach (var property in properties)
        {
            if (job.JobDataMap.ContainsKey(property.Key) && property.Value != null)
            {
                job.JobDataMap.Put(property.Key, property.Value);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我最初认为这是因为我正在使用XMLSchedulingDataProcessorPluginfor 作业,但我已经尝试了内存(RAMStore)AdoJobStore并且仍然无法保留JobDataMap远程客户端所做的更改。

quartz-scheduler quartz.net

4
推荐指数
1
解决办法
3808
查看次数

从ASP.NET Web API中的Query String绑定到动态对象

我想从ASP.NET Web API中的请求查询字符串绑定到动态对象.虽然[FromUri]使用普通类来处理动作参数,但它似乎不适用于动态(动态对象为空).

public dynamic Get(string id, [FromUri]dynamic criteria)
{
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

请注意,这需要适用于GET请求,因此没有正文.

c# asp.net-web-api

4
推荐指数
2
解决办法
3748
查看次数

NVelocity ASP.NET示例

我希望在我的ASP.NET MVC应用程序中使用NVelocity,而不是作为视图引擎,只是为了呈现一些电子邮件模板.

但是,我不能为我的生活得到它的工作.我已经从城堡项目下载了它,并按照http://www.castleproject.org/others/nvelocity/usingit.html#step1上的示例进行了操作

无论我尝试什么,我似乎无法加载位于我的网站中的模板.该示例建议使用绝对路径,我试图无效:

Template t = engine.GetTemplate("/Templates/TestEmail.vm");
Run Code Online (Sandbox Code Playgroud)

所以请有人给我两个例子.一个是加载位于网站目录中的模板,另一个是解析一个字符串变量(因为我的模板很可能存储在数据库中).

非常感谢Ben

asp.net nvelocity

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