小编Jax*_*ian的帖子

从Expression <Func <TModel,TProperty >>获取属性,作为字符串

我使用了一些强类型表达式,这些表达式被序列化以允许我的UI代码具有强类型排序和搜索表达式.这些是类型的Expression<Func<TModel,TProperty>>并且如此使用:SortOption.Field = (p => p.FirstName);.对于这个简单的案例,我已经完美地完成了这项工作.

我用来解析"FirstName"属性的代码实际上重用了我们使用的第三方产品中的一些现有功能,并且它工作得很好,直到我们开始使用深层嵌套的属性(SortOption.Field = (p => p.Address.State.Abbreviation);).此代码在支持深层嵌套属性的需求方面有一些非常不同的假设.

至于这段代码的作用,我并不是真的理解它而不是改变代码,我想我应该从头开始编写这个功能.但是,我不知道这样做的方法.我怀疑我们可以做一些比做ToString()和执行字符串解析更好的事情.那么有什么好办法来处理琐碎和深层嵌套的案例呢?

要求:

  • 鉴于表达式p => p.FirstName我需要一串"FirstName".
  • 鉴于表达式p => p.Address.State.Abbreviation我需要一串"Address.State.Abbreviation"

虽然对我的问题的答案并不重要,但我怀疑我的序列化/反序列化代码对将来发现这个问题的其他人有用,所以它在下面.同样,这段代码对这个问题并不重要 - 我只是觉得它可能对某些人有所帮助.请注意,DynamicExpression.ParseLambda它来自动态LINQ的东西,Property.PropertyToString()这是这个问题的关键.

/// <summary>
/// This defines a framework to pass, across serialized tiers, sorting logic to be performed.
/// </summary>
/// <typeparam name="TModel">This is the object type that you are filtering.</typeparam>
/// <typeparam name="TProperty">This is the property on the …
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

无法获取页脚的汇编版本

我正在使用此问题中提到的自动构建版本控制(不是选定的答案,而是使用该[assembly: AssemblyVersion("1.0.*")]技术的答案).我在MVC 2中的Site.Master文件的页脚中执行此操作.我执行此操作的代码如下:

<div id="footer">
    <a href="emailto:webmaster@foo.com">webmaster@foo.com</a> - Copyright © 2005-<%= DateTime.Today.Year.ToString() %>, foo LLC. All Rights Reserved.
    - Version: <%= Assembly.GetEntryAssembly().GetName().Version.ToString() %>
</div>
Run Code Online (Sandbox Code Playgroud)

我得到的例外是Object reference not set to an instance of an object因为GetEntryAssembly()返回NULL.我的其他选择也不起作用.GetCallingAssembly()始终返回"4.0.0.0"并GetExecutingAssembly()始终返回"0.0.0.0".当我查看我的DLL时,一切都是我期望的版本控制.但我无法弄清楚如何访问它以显示在我的页脚!

versioning asp.net-mvc visual-studio-2010 asp.net-mvc-2

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

设置C#可选参数的默认值

每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,我都会得到编译时错误

'message'的默认参数值必须是编译时常量.

有什么办法可以改变资源文件的工作方式来实现这个目标吗?

public void ValidationError(string fieldName, 
                            string message = ValidationMessages.ContactNotFound)
Run Code Online (Sandbox Code Playgroud)

在这里,ValidationMessages是一个资源文件.

c# default-value optional-parameters

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

在T4模板中获取引用项目的路径?

我有一个解决方案,其中包含一些项目.我想在我的一个测试项目中创建一些T4模板,以根据另一个项目中的代码生成测试.测试项目有一个项目参考另一个项目.我遇到的问题是我不知道如何获取我需要生成代码的edmx文件的文件路径.

示例(假装这是一个基于ASCII的解决方案资源管理器):

MySolution.sln
-> MyTests.csproj (C:\a\b\c\)
----> GeneratedTests.tt (C:\a\b\c\GeneratedTests.tt)
-> MyDAL.csproj (C:\x\y\z\)
----> MyModel.edmx (C:\x\y\z\MyModel.edmx)
Run Code Online (Sandbox Code Playgroud)

我的GeneratedTests.tt如何利用其项目引用获取MyModel.edmx的文件路径?

c# t4 visual-studio-2010

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

了解TransactionScopeOptions:RequiresNew =抑制+必需?

我相信我理解TransactionScopeOption.Suppress,TransactionScopeOption.Required但很难理解是什么TransactionScopeOption.RequiresNew.根据我读到的最后一个解释,以下两个代码块在功能上是否相同?这是什么RequiresNew意思的准确表示?

using (var ts1 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
  DoStuff();
  ts1.Complete();
}
Run Code Online (Sandbox Code Playgroud)

using (var ts2 = new TransactionScope(TransactionScopeOptions.Suppress))
{
  using (var ts3 = new TransactionScope())
  {
    DoStuff();
    ts3.Complete();
  }

  ts2.Complete(); // not required but recommended for consistency's sake
}
Run Code Online (Sandbox Code Playgroud)

.net transactionscope

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

可以收集MVC CSS文件?

只是好奇 - 是否有各种自定义Site.css文件(和附带的图像)与默认的ASP.NET MVC 2模板一起使用?我是一个"不做漂亮"的刻板开发者,所以我想找到一个足够好的设计供我使用,直到我后来有一位设计师回来修理我的设计.

是否有可以使用默认模板的各种设计的集合/库?我确实找到了这个,但我尝试的两个流行的似乎是他们的MVC 1,加上他们没有使用MVC 2模板的默认标签.

css asp.net-mvc asp.net-mvc-2

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

Sitemap随着时间的推移随机分解

我一直有一些我不完全理解的生产运行时错误.我们在几个不同的ASP.NET 4.0网站上发生过这种情况(不寒而栗 - 是的,我知道 - 我们将它移植到MVC但这需要一些时间).

首先,我们从未能够在开发/ QA环境中重现此问题.其次,在部署时,问题似乎不存在.有时,问题会在部署的一两天内出现,有时则部署将在一个月内生效,而根本不会显示.但是,一旦显示,则在网站下查看的任何页面都会导致错误.最后,一旦我们迁移到.NET 4.0,这个问题似乎才会出现.我们从2.0开始,一年前上升到3.5,最近通过这个解决方案和大多数儿童项目上升到4.0.

错误: Could not find the sitemap node with URL '~/Default.aspx'.

我们的站点地图的简化版本(更改了一些名称并删除了不感兴趣的节点)如下:

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
   <siteMapNode roles="*" title="EG">
      <siteMapNode url="~/../SM/Default.aspx" title="Welcome" description="" roles="*" />
      <siteMapNode url="~/../SD/Default.aspx" title="SD" description="" roles="*" />
      <siteMapNode url="~/../SMD/Default.aspx" title="SMD" description="" roles="*" />
      <siteMapNode url="~/Default.aspx" title="Ops" description="" roles="*" >
         <siteMapNode url="~/Error.aspx" title="Error" hide="true" roles="*" />
         <siteMapNode url="~/Public/Login.aspx" hide="true" roles="*" />
         <siteMapNode url="~/Manager/LPCE.aspx" title="LPCE" description="" roles="Administrator, Manager, System, Marketer" imageUrl="~/../SM/images/icons/LF.jpg" />
      </siteMapNode>
      <siteMapNode url="~/../SDD/Default.aspx" title="SDD" description="" roles="*" />
      <siteMapNode url="~/../CCD/Default.aspx" …
Run Code Online (Sandbox Code Playgroud)

sitemap asp.net runtime-error

11
推荐指数
1
解决办法
2451
查看次数

来自Dynamic Linq的Execution-Deferred IQueryable <T>?

我正在使用Dynamic Linq来执行一些查询(抱歉,这是我唯一的选择).结果,我得到了一个IQueryable而不是一个IQueryable<T>.就我而言,我希望有一个IQueryable<Thing>地方Thing是一个具体类型.

我的查询是这样的:

public IQueryable<Thing> Foo(MyContext db)
{
    var rootQuery = db.People.Where(x => x.City != null && x.State != null);
    var groupedQuery = rootQuery.GroupBy("new ( it.City, it.State )", "it", new []{"City", "State"});
    var finalLogicalQuery = groupedQuery.Select("new ( Count() as TotalNumber, Key.City as City, Key.State as State )");
    var executionDeferredResults = finalLogicalQuery.Take(10); // IQueryable

    IQueryable<Thing> executionDeferredTypedThings = ??; // <--- Help here!!!!

    return executionDeferredTypedThings;
}
Run Code Online (Sandbox Code Playgroud)

我的事情:

public class Thing
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework dynamic-linq .net-4.5

10
推荐指数
2
解决办法
1587
查看次数

如何使用Microsoft Bot Framework处理丰富的内容?

我不确定如何处理丰富的内容.我想要返回的一些示例是超链接列表或/某些图像缩略图.我该怎么做呢?我尝试将我的文本格式化为HTML并且崩溃了Bot Emulator并导致Web Chat客户端只显示编码的HTML.

这个或一些文件解释这个有秘密吗?

botframework

10
推荐指数
2
解决办法
5605
查看次数

哪个地区在Azure中标记为East US 2?

我找不到任何关于此的信息.这个地区在哪里?我知道美国东部地区在弗吉尼亚州,但我特别询问美国东部地区.

Azure管理门户中的US East 2的屏幕截图

azure azure-sql-database

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