我使用了一些强类型表达式,这些表达式被序列化以允许我的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) 我正在使用此问题中提到的自动构建版本控制(不是选定的答案,而是使用该[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时,一切都是我期望的版本控制.但我无法弄清楚如何访问它以显示在我的页脚!
每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,我都会得到编译时错误
'message'的默认参数值必须是编译时常量.
有什么办法可以改变资源文件的工作方式来实现这个目标吗?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
Run Code Online (Sandbox Code Playgroud)
在这里,ValidationMessages
是一个资源文件.
我有一个解决方案,其中包含一些项目.我想在我的一个测试项目中创建一些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的文件路径?
我相信我理解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) 只是好奇 - 是否有各种自定义Site.css
文件(和附带的图像)与默认的ASP.NET MVC 2模板一起使用?我是一个"不做漂亮"的刻板开发者,所以我想找到一个足够好的设计供我使用,直到我后来有一位设计师回来修理我的设计.
是否有可以使用默认模板的各种设计的集合/库?我确实找到了这个,但我尝试的两个流行的似乎是他们的MVC 1,加上他们没有使用MVC 2模板的默认标签.
我一直有一些我不完全理解的生产运行时错误.我们在几个不同的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) 我正在使用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) 我不确定如何处理丰富的内容.我想要返回的一些示例是超链接列表或/某些图像缩略图.我该怎么做呢?我尝试将我的文本格式化为HTML并且崩溃了Bot Emulator并导致Web Chat客户端只显示编码的HTML.
这个或一些文件解释这个有秘密吗?
我找不到任何关于此的信息.这个地区在哪里?我知道美国东部地区在弗吉尼亚州,但我特别询问美国东部地区.
c# ×4
asp.net-mvc ×2
.net ×1
.net-4.5 ×1
asp.net ×1
azure ×1
botframework ×1
css ×1
dynamic-linq ×1
lambda ×1
linq ×1
sitemap ×1
t4 ×1
versioning ×1