小编Bob*_*son的帖子

部分取消组合重复值列表

我知道如何使用LINQ对数据进行分组,我知道如何将其拆分为单独的项目,但我不知道如何仅将其部分取消组合.

我有一组看起来像这样的数据:

var data = new Dictionary<Header, Detail>()
{
    { new Header(), new Detail { Parts = new List<string> { "Part1", "Part1", "Part2" } } }
};
Run Code Online (Sandbox Code Playgroud)

为了正确处理这个问题,我需要复制部分的每个实例都是字典中的单独条目(尽管如果它仍然是字典并不重要 - IEnumerable<KeyValuePair<Header, Detail>>完全可以接受).但是,我不想Parts完全拆分列表 - 在列表中有不同的部分是可以的.

具体来说,我希望最终数据看起来像这样:

{
  { new Header(), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
  { new Header(), new Detail { Parts = new List<string> { "Part1" } } },
}
Run Code Online (Sandbox Code Playgroud)

对于更复杂的示例:

var data = new Dictionary<Header, Detail>()
{
    { new …
Run Code Online (Sandbox Code Playgroud)

c# linq

7
推荐指数
1
解决办法
1478
查看次数

内容文件未使用Visual Studio 2010 FTP发布进行更新

我们使用Subversion(通过TortoiseSVN)和Visual Studio 2010来部署我们的网站.我们有专门的帐户,我们进行SVN更新,然后FTP发布到我们的实时服务器.不幸的是,有时当我们发布时,已经改变的CSS和Javascript文件不会被推送.这不是缓存问题,因为我们检查了服务器并且文件实际上没有更改.发布过程中没有失败表明文件没有出现.如果我们对它们做一个微不足道的改变(例如添加一个空格),它们就会发布得很好.

有什么建议?

编辑:我有一些想法,但我不确定如何测试:如果一个人修改文件但没有检查(时间戳A),而其他人做了发布(时间戳B),是否有可能,当文件稍后在服务器上签入并更新(时间戳C)时,Visual Studio会看到B> A并忽略C,所以它认为它不需要更新?

visual-studio-2010 visual-studio

6
推荐指数
1
解决办法
1406
查看次数

我不明白持久性独立的意义

可能重复:
持久性无知有什么好处?

经过一段时间和一些试图找出实体框架的问题,我得出的结论是,我只是没有得到持久性无知对象的意义.

尽我所知,使用持久性感知对象和持久性无知对象之间的实际区别在于,使用类似于

Person p = Person.Load(id);
p.Active = false;
p.Save();
Run Code Online (Sandbox Code Playgroud)

而另一个沿着线路使用

using (var context = new MyContext())
{
   Person p = context.Persons.Single(x => x.ID == id);
   p.Active = false;
   context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我可以返回p,Save()稍后再打电话.在后者中,我可以返回p,但我需要把它放到一个新MyContext()的保存它.在第一种情况下,假设Person从实际处理数据库逻辑的某个基础对象继承Load()和Save(),如果我想更改持久性,它只涉及更改该基础对象(甚至只是有一个IPersistent接口)多个基类可以实现访问多个商店).在后者中,MyContext如果持久层发生了变化,我需要更改每个实例,并且要零碎地进行操作会非常复杂.

我的印象是,持久性 - 无知是一件好事.我只是无法理解为什么.看起来设置,使用,改变批发和改变零碎都要复杂得多,而且没有任何优势.我只是遗漏了一些重要的东西,还是我对持久性意识/无知意味着什么有缺陷的完全理解?

c#

6
推荐指数
1
解决办法
1089
查看次数

RazorGenerator,模板和@Html

我正在尝试使用RazorGenerator作为电子邮件模板引擎.我想用数据模型,组装正确的部分视图集,并返回我可以通过电子邮件发送的HTML.
编辑:除了这个工作流程,任何解决方案都需要作为.cshtml文件编辑,并能够编译成一个DLL.由于各种原因,部署cshtml文件本身是不切实际的 - 如果我们无法将所有剃刀视图嵌入到单个文件中,那么我们就无法使用该建议.因此RazorGenerator.

到目前为止,我已经计算出它的每个部分,除了部分.当我尝试在模板文件中使用@ Html.Partial()时,我得到:The name 'Html' does not exist in the current context.

基于这个答案,我知道@Html默认情况下它不是Razor的一部分,关于如何HtmlHelper在控制器中创建一个答案.但是,我需要在模板中创建一个模板,这个模板没有ControllerContext我需要遵循这些示例的模板.

我也尝试使用@Include,但RazorGenerator模板似乎不支持. 编辑:我也尝试创建一个继承自TemplateBase<>并复制了所有功能的新类RazorTemplateBase,但我得到NullReferenceException了解决方案@Include.

所以,我的主要问题是:是否有更好的方法将另一个Razor文件(带模型)包含到我的文件中?

其次,如果没有更好的方法,我怎样才能创建HtmlHelper?


编辑赏金:重申一下,在可接受的答案中我需要的四件事是:

  1. .cshtml使用标准编辑器编辑文件的能力(不"将其存储为字符串"等)
  2. 能够将所有内容编译成单个dll,可以使用我们当前的构建系统进行部署(我们无法部署大量单独的.cshtml)
  3. 能够从另一个引用一个.cshtml文件,并传递一个模型 - 相当于@Includes@Html.Partial(如果它们工作,它们中的任何一个都是完全可以接受的)
  4. 使用附件通过电子邮件发送结果的功能.(如果结果是字符串或可以转换为一个字符串,我已经有了这个代码.)

我目前可以得到其中三种工作的大部分组合,但我不能同时获得所有四种.我愿意接受新的库,取代RazorGenerator,或抛弃我已经拥有的任何部分,只要结果能够按需要运行.

c# template-engine asp.net-mvc-3 razorgenerator

6
推荐指数
1
解决办法
4156
查看次数

MemoryStream.Capacity与MemoryStream.Length的数据类型

今天我发现MemoryStream课堂上有些奇怪.该.Length物业是一个long,但 .Capacity财产,应该可能永远>= .Length只是一个int.

我知道,如果长度超过可能的容量需要超过1 GB的流,但这对我来说似乎很奇怪. Length不能改变,因为它是继承的Stream,但为什么不做Capacity一个long呢?碰巧的能力,如果你MemoryStream超过int.MaxValue长?

.net c# memorystream

6
推荐指数
1
解决办法
1261
查看次数

安全问题包括在网站的bin文件夹中包含csc.exe

为了在MVC5下?..cshtml文件中使用C#6功能(如),在部署时需要在网站的bin文件夹中包含csc.exe和相关文件.好的,我能理解其中的原因.

但是,现在这意味着我的网络服务器上有一个完整的C#编译器,具有与网站用户相同的权限.这让我犹豫不决 - 理论上,攻击者可以使用它来运行任意代码,就好像它是我的网站一样.

这实际上是一个有效的安全问题吗?

我可以看到双方:一方面,它可能是你需要执行任意代码的能力已经为了能够任意代码传递给CSC可执行文件.另一方面,通过运行我们永远不想写的代码,我可以看到对它的访问被用来访问内部网站设置(如数据库连接字符串).

我应该担心,还是认为安全?

.net c# security asp.net-mvc

6
推荐指数
1
解决办法
145
查看次数

路线始终转到第一个maproute

我正在尝试创建看起来像这样的URI: http://hostname/mobile/en/controller/action用于移动设备或http://hostname/en/controller/action用于桌面(非移动设备).

我的路由表目前看起来像这样(Global.asax.cs)

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Mobile", // Route name
            "mobile/{language}/{controller}/{action}/{id}", // URL with parameters
            new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
            new { language = @"en|us" } // validation
        );
        routes.MapRoute(
            "Default", // Route name
            "{language}/{controller}/{action}/{id}", // URL with parameters
            new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
            new { language = @"en|us" } // validation …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc routing asp.net-mvc-routing asp.net-mvc-2

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

实体框架和数据库列名称

我正在尝试修改POCO T4模板,以在数据库中包含与每个属性对应的列的名称.由于遗留的原因,我们的数据库表是8.3,我们的列最多10个字符,所以事情往往会被取消.能够快速查找给定属性对应的列将是一个很大的帮助.

鉴于此,我不知道如何去做这件事.我对编辑T4模板的想法很满意,我只是不知道如何从EdmProperty对象中检索列名.

谁能指出我正确的方向?

c# entity-framework poco

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

将文本文件直接发送到网络打印机

我有当前正在运行的代码,它通过编写临时文件将原始数据发送到打印机,然后用File.Copy()它将其发送到打印机. File.Copy()支持本地端口,像LPT1和共享打印机一样\\FRONTCOUNTER\LabelPrinter.

但是,现在我正在尝试使用直接在网络上的打印机:192.168.2.100,我无法弄清楚要使用的格式.

File.Copy(filename, @"LPT1", true); // Works, on the FRONTCOUNTER computer
File.Copy(filename, @"\\FRONTCOUNTER\LabelPrinter", true); // Works from any computer
File.Copy(filename, @"\\192.168.2.100", true); // New printer, Does not work
Run Code Online (Sandbox Code Playgroud)

我知道可以从每台计算机上"添加打印机",但我希望避免这种情况 - 上面的第二行代码可以自动从网络上的任何计算机上运行,​​无需配置.我也知道可以P/Invoke windows打印假脱机程序,如果这是我唯一的选择,我可以接受它,但这比我想要的代码开销要多得多.

理想情况下,某人将拥有一种File.Copy()工作方式或类似的C#语句,它将接受网络IP.

c# printing network-printers

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

如何在不更改COM +类ID的情况下向类添加方法

我在一个必须符合某些规范的DLL中编写一些代码.其中之一是,它只能使用它当前拥有的方法,枚举,类等.

所有一种方法的规范由我"提交"dll的应用程序强制执行.如果它不符合规格,它会拒绝它.

更新:这是在C#中特别发生的.有关规范的文档说明:"如果更改了除四个公共函数之外的任何代码,则COM +类ID可能会更改,并且对象安全脚本将无法运行,从而导致BSTCustomValidation.dll验证组件无法运行."

c# com coding-style

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