我知道将域模型用作视图模型可能会很糟糕.如果我的域模型有一个名为IsAdmin的属性并且我有一个Create控制器操作来创建用户,那么即使我没有在我的视图中公开这样的文本字段,也有人可以改变我的表单并使其发布一个IsAdmin = true表单值. .如果我正在使用模型绑定,那么当我提交我的域模型时,该人现在将成为管理员.因此,解决方案只是在视图模型中公开我需要的属性,并使用AutoMapper之类的工具将我返回的视图模型对象的属性值映射到我的域模型对象的属性值.但是我读到类上的bind属性可以用来指示Model Binder它应该和不应该绑定哪些属性.那么究竟是什么原因使得两个独立的类(领域模型和视图模型)必须代表相同的东西,然后在映射它们时增加开销呢?这是一个代码组织问题,如果是这样,我如何受益?
编辑
我遇到的与域模型分离的视图模型的最重要原因之一是需要实现MVVM模式(基于Martin Fowler的PM模式)来管理复杂的UI.
我使用EF的Code-First方法,我想使用IDbSet而不是DbSet,所以我可以使用模拟进行单元测试.我的问题是我在必要时使用Include()方法进行急切加载,但是不通过IDbSet公开Include().我看到一个示例代码使用扩展方法来公开Include(),但它似乎对我不起作用; 此示例中的objectQuery对象始终为null.请让我知道如何解决这个问题.
public static class IQueryableExtension
{
public static IQueryable<T> Include<T>(this IQueryable<T> source, string path)
where T : class
{
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
return objectQuery.Include(path);
}
return source;
}
public static IQueryable<T> Include<T, TProperty>(this IQueryable<T> source,
System.Linq.Expressions.Expression<Func<T, TProperty>> path)
where T : class
{
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
return source.Include(path);
}
return source;
}
}
Run Code Online (Sandbox Code Playgroud) 如果我使用像OwinMiddleware和IOwinContext这样的Microsoft.Owin类型构建OWIN中间件,我的中间件是否可以与非Microsoft Owin主机/服务器一起使用?我正在研究Nancy和SignalR的中间件类,它们看起来与OwinMiddleware基类非常不同,中间件就像Cookie认证中间件和WebApi一样.我正在阅读规范,但我仍然不清楚非Microsoft Owin服务器是否可以使用OwinMiddleware和IOwinContext类型而不依赖于Microsoft.Owin(我猜这会破坏Owin的目的).
就像问题所说的那样,我想知道是否可以关闭整个站点的所有控制器和操作的缓存.谢谢!
除了thinktecture的身份服务器之外,还有谁知道其他任何身份服务器?我需要评估一些,但我找不到了?
在EF 4,我可以通过编写SQL做导航性能的渴望装载DbContext.Database.SqlQuery
或DbContext.Set<T>().SqlQuery
?我似乎没有填充我的导航属性.
编辑
看来我可以使用DbContext.Set()进行eagerloading.SqlQuery,而不是DbContext.Database.SqlQuery.知道为什么吗?
我刚刚进入jQuery,我在理解它是什么时遇到了问题.如何在jQuery对象上使用数组样式索引但jQuery不是数组?这是一个javascript的东西吗?
<ul id="myUL">
<li></li>
<li id="second"></li>
<li></li>
</ul>
var jqueryObject = $("#myUL > li");
alert(jqueryObject[1].attributes.getNamedItem("id").value);
if (jqueryObject instanceof Array) {
alert('value is Array!');
} else {
alert('Not an array');//this is what pops up
}
Run Code Online (Sandbox Code Playgroud) 所以我想开始使用EntityFramework 4.3迁移.我想知道我是否可以将现有数据库转换为支持迁移的数据库,并且让EF假设只有从那时起的更改才应被视为迁移.
我一直在寻找一些关于在目标c中从数字转换为罗马数字的示例代码.有谁知道我在哪里可以找到一个很好的例子?
更新:
没关系,发现了一个PHP功能,可以完成我想要的操作并移植它.到目前为止似乎工作正常.
-(NSString*)numberToRomanNumerals:(int)num{
if (num < 0 || num > 9999) { return @""; } // out of range
NSArray *r_ones = [[NSArray alloc]initWithObjects:@"I", @"II", @"III", @"IV", @"V", @"VI", @"VII", @"VIII",@"IX",nil];
NSArray *r_tens = [[NSArray alloc]initWithObjects:@"X", @"XX", @"XXX", @"XL", @"L", @"LX", @"LXX",@"LXXX", @"XC",nil];
NSArray *r_hund = [[NSArray alloc]initWithObjects:@"C", @"CC", @"CCC", @"CD", @"D", @"DC", @"DCC",@"DCCC", @"CM",nil];
NSArray *r_thou = [[NSArray alloc]initWithObjects:@"M", @"MM", @"MMM", @"MMMM", @"MMMMM", @"MMMMMM",@"MMMMMMM",
@"MMMMMMMM", @"MMMMMMMMM",nil];
int ones = num % 10;
int tens = (num - ones) …
Run Code Online (Sandbox Code Playgroud) 所以我计划创建一个包含许多可动画UI元素的复杂页面.我想想出一个干净的方法来维护这些可动画的UI元素的状态(展开/折叠,突出显示等).我有一些想法,但我只是想知道是否有人知道这样做的js框架,所以我不重新发明轮子.
编辑
到目前为止我的想法是:
1)在表单帖子上,获取每个UI元素的状态并将其添加到POST数据.我正在考虑使用一个特殊的CSS类(一种用于跟踪的注册)来标记我想跟踪状态的所有UI元素,并且每个都支持一些回调,这将允许我以多态方式获取它们的状态(每个UI元素)有它自己对状态的理解,例如扩展,选定的索引,突出显示等)
2)为我的UI元素创建HtmlHelpers,它可以识别从客户端发送的状态信息,并以正确的状态输出UI元素的html(我更喜欢在服务器端设置状态而不是让js在整个地方弹出东西在客户端恢复状态......对吗?)
3)不像WebControls或ViewState那样复杂或臃肿
是否有一个框架可以做到这样的事情并且做得更好,如果没有,我提出的框架听起来是个好主意吗?
jquery ×2
arrays ×1
caching ×1
code-first ×1
javascript ×1
jquery-ui ×1
katana ×1
model ×1
modelbinders ×1
objective-c ×1
owin ×1
signalr ×1
t-sql ×1
viewmodel ×1