我有一个ORM(NHibernate)映射到POCO,它将在ApiControllers中返回.我意识到JSON.NET允许我在我的模型上放置条件序列化方法(ShouldSerialize*); 然而,这些模型及其方法对环境一无所知,也不应该知道.我想要做的是根据用户登录我的网站时的角色有条件地序列化模型或其一个或多个属性.我可以从概念上理解如何做到这一点,但我在一个部分迷失了.这是一个示例模型:
public class SomeModel
{
public string SomeProperty { get; set; }
[Sensitive]
public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在属性上添加一个属性,将其标记为"敏感".然后在我的WebApi中将它序列化为输出时,我希望它检查该属性的模型,如果存在,则应该检查用户的角色.如果用户处于指定角色,则序列化程序应该序列化该属性,否则它将掩盖它或者根本不对其进行序列化.那么我是否必须编写自己的自定义格式化程序来处理这个问题,或者有没有办法挂钩内置的格式化程序来执行此检查?或者我的想法太局限了,还有另一种方法可以解决这个问题吗?
我确实认为可以处理的其他方式是在ORM级别,但无法在线找到好的示例.
非常感激!
编辑:我在这里找到了另一个类似的问题: 基于权限的WebApi端点的上下文序列化, 但没有解决方案.另外,我不喜欢通过属性在模型中设置基于角色的访问的想法.我认为应该在Web应用程序中处理.
我在IntelliJ中熟悉它后,正在VS 2013中开展angular2 @ beta项目.IntelliJ可以设置为查找tsconfig.json文件,从TypeScript 1.6开始,它可以读取"exclude"属性,而不是尝试编译任何node_modules.现在我已经使用TypeScript 1.7迁移到VS 2013,我遇到了它正在尝试编译node_modules的问题.我已经包含了tsconfig.json,但是根据我的阅读,tsconfig.json仅在VS 2015中得到完全支持.这是最新的问题吗?有没有办法告诉VS 2013排除这些文件或使用我的tsconfig.json?
我还应该注意,当我进行npm安装时,angular2 @ beta包括其源代码的其余部分.这会将所有类型的内容与所有文件混合在一起,我想也许我可能必须删除所有非.d.ts文件以获得没有所有其他错误的输入.以前您可以使用"tsd install angular2"获取打字但这已不再可用.对此的解决方案将否定先前的问题.
更新
我可以在VS 2015 - 社区版上完成所有这些工作,但我真的很想知道我是否可以在VS 2013上使用它.
这是重现错误的示例应用程序的链接:http : //sdrv.ms/17j2Ale
我有三个项目。一个是.NET 2.0 Windows Forms应用程序(.NET App),一个是VB6 Standard EXE应用程序(VB App),另一个是VB6 ActiveX DLL(VB DLL)。.NET 应用程序引用已注册的 VB DLL。这个 VB DLL 本质上是启动 Crystal Reports。VB 应用程序通过 Shell() 命令启动 .NET 应用程序。这是发生的事情:
如果我直接运行 .NET App,我可以毫无问题地打开 Crystal Reports 文档。但是,当 VB 应用程序通过 Shell() 命令启动 .NET 应用程序时,当 .NET 应用程序尝试打开 Crystal Reports 文档时,出现内存不足错误。
现在是关键 - 这在 Windows XP 上有效,但是当我们尝试在 64 位 Windows 7 中启动它时,我们遇到了这个问题。我相信一定有一个简单的解决方案。有接班人吗?
您可以跳到更新 5,我在那里缩小了问题的范围。
更新:我还尝试创建第二个 .NET 2.0 Windows 窗体应用程序(.NET Launcher),并通过以下方式启动 .NET 应用程序:
Process.Start(@"C:\Path\OtherApp.exe");
Run Code Online (Sandbox Code Playgroud)
当我尝试在 .NET 应用程序中打开 Crystal Reports 文档时,它仍然给我同样的内存不足错误。
更新2:由于更新 4 删除
更新 …
我正在创建一个带有画布的图像查看器,它将在新窗口中弹出.我希望画布是窗口的宽度,从顶部和底部100px.我也希望它不使用javascript调整大小(让我处理javascript中的重绘 - 我只是想看到画布保持固定在窗口边缘的顶部和底部间距.)我该怎么做?我尝试了以下内容,但右侧和底部被忽略:
.contextCanvas
{
position: fixed;
left: 0px;
right: 0px;
top: 100px;
bottom: 100px;
}
Run Code Online (Sandbox Code Playgroud)
有关浏览器为什么会高兴地忽略右侧和底部的任何建议或推理?
c# ×2
appdomain ×1
canvas ×1
css ×1
css-position ×1
html5 ×1
nhibernate ×1
tsconfig ×1
typescript ×1
vb6 ×1