我有一个WPF窗口,在那个窗口我有一个网格.
我使用MV-VM模型,我想在代码中动态地将TextBox添加到网格中(在viewmodel中)
我怎样才能访问网格?
我在组合foreach绑定时遇到了麻烦.我有一个列表绑定如下:
<article data-bind="foreach: widgets">  
Run Code Online (Sandbox Code Playgroud)
小部件是一个简单的可观察数组:
var widgets= ko.observableArray();
Run Code Online (Sandbox Code Playgroud)
这很好地给了我一个我的"小部件"列表.如果我将新的"小部件"添加到此列表中,则它将通过数据绑定动态显示在列表中.
但是,只要我向数组添加排序:
<article data-bind="foreach: widgets.sort(function (left, right) { return left.order() == right.order() ? 0 : (left.order() < right.order() ? -1 : 1); })">
Run Code Online (Sandbox Code Playgroud)
然后新添加的小部件不再出现在我的列表中 - 除非我重新加载页面.(此时排序很有效 - 如果我更新了我正在排序的"order"字段,那么列表中的项目将被动态重新排序).
如何通过动态更新我的可观察数组中的新项目来进行排序?
我正在使用Breezejs来检索我的数据,但我不认为这会影响这种情况.
这是linq-to-sql
我有很多不同的类都在做相同的查询,但投影结果略有不同.理想情况下,我希望能够在一个地方进行查询,并将投影传递给Select方法.它适用于具体类型:
public void GetResults() {
    var junk = db.SiteProducts.Select(Project());
}
public Expression<Func<DbEntities.SiteProduct, string>> Project() {
    return p => p.ProductAlert;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试返回匿名类型时,它会失败
public void GetResults() {
    var junk = db.SiteProducts.Select(Project());
}
public Expression<Func<DbEntities.SiteProduct, TResult>> Project<TResult>() {
    return p => new { p.ProductAlert };
}
Run Code Online (Sandbox Code Playgroud)
我完全理解为什么泛型类型推断在第二种情况下失败了.但是有没有从头开始制作我自己的表达式的技巧 - 我错过了可以让这个工作?
对于当前项目,我试图了解如何有效地利用Knockout 2.1.0,Upshot 1.0.0.2,ASP.NET MVC4和Entity Framework 4.3.有许多基本的架构问题似乎没有现成的答案.我列举了我的几个问题(在单独的帖子中),希望有人能够在我们尝试在实际应用程序中实现这种组合时为自己和他人提供合理的指导.
在史蒂夫桑德森在二月淘汰赛和Upshot.js在TechDays荷兰真棒演讲,他提到的结果可以容纳连接到服务器的多种方法.(如果您还没有看过演示文稿,那么值得观看.您可以在http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159查看.)
不幸的是,他没有时间详细说明这些通信机制是什么或推荐的是什么以及在什么情况下.
根据Denver Developer在他的博客文章"挖掘到Upshot.js"(http://denverdeveloper.wordpress.com/2012/03/07/digging-into-upshot-js/)的说法,有三个数据提供者被公开Upshot.js.这些是:
•默认值为DataProvider(),并使用/ Submit方法和您提供的操作来使用jQuery的$ .ajax方法获取数据.(AG注意:我认为这通常与WebAPI公开的DbDataController对象有关,但我不确定它们的确有什么限制.)
•下一个是riaDataProvider() - 与第一个类似,但它使用/ json/SubmitChanges方法和/ json/{your opertion}来获取数据
•最后我们还有odataDataProvider() - 这个是完全不同的,因为它目前不支持更新数据 - 它是只读的.
关于选择典型用途的提供者,自然会出现许多密切相关的问题.
在相关的说明中,关于互联网上的结果的文档似乎很少.除了在upshot.js中浏览4700多行代码之外,这个库还有其他合适的文档来源吗?
到目前为止,我所查看的资源包括以下内容(以及更多内容).
来自Steve Sanderson的SPA演示的源代码(可从http://blog.stevensanderson.com/2012/03/06/single-page-application-packages-and-samples/获得).
Bart Jolling在他的文章"使用ASP.NET MVC4构建单页应用程序"(第1-4部分)中对Steve Sanderson的SPA演示应用程序的变化.http://bartjolling.blogspot.com/2012/04/building-single-page-apps-with-aspnet.html
来自ASP.NET站点的Big Shelf SPA演示代码 - http://www.asp.net/single-page-application/spa-samples/sample-bigshelf-application
Microsoft ASP.NET"A Tour through SPA"(主要关注结果样本) http://www.asp.net/single-page-application/spa-samples.
upshot js正在积极发展吗?所有结果文章都是在2012年3月写的.是ups js稳定吗?微风似乎正在积极发展.
它准备好生产吗?添加了vs spa应用程序模板,稍后将其删除.什么时候重新加入?我猜它会因为结果与ms有关而重新加入.
public class TodosController : ApiController {
    readonly EFContextProvider<TodosContext> contextProvider = 
        new EFContextProvider<TodosContext>("TodosContext");
    // ~/api/todos/Metadata 
    [AcceptVerbs("GET")]
    public string Metadata() {
        return contextProvider.Metadata();
    }
    // ~/api/todos/Todos
    // ~/api/todos/Todos?$filter=IsArchived%20eq%20false&$orderby=CreatedAt 
    [AcceptVerbs("GET")]
    public IQueryable<TodoItem> Todos() {
        return contextProvider.Context.Todos;
    }
    // ~/api/todos/SaveChanges
    [AcceptVerbs("POST")]
    public SaveResult SaveChanges(JArray saveBundle) {
        return contextProvider.SaveChanges(saveBundle);
    }
    // other miscellaneous actions of no interest to us here
}
Run Code Online (Sandbox Code Playgroud) 我正在使用EF5 Code First定义我的一些模型atm.我有这三个具有多对多关系的示例类:
Run Code Online (Sandbox Code Playgroud)public class Team { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Team_Id { get; set; } [MaxLength(150)] public string TeamName { get; set; } public virtual ICollection<User> Users { get; set; } [public virtual ICollection<Role> Roles { get; set; } // 1 [Timestamp] public byte[] TimeStamp { get; set; } } public class User { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int User_Id { get; set; } [MaxLength(150)] public string LoginName { get; set; } [MaxLength(150)] public string Nachname { get; set; } …
启动一个新项目,它是针对一个非常大的(300个表)遗留数据库的100%新开发.数据库与业务模型的匹配程度不高,所以我最初想到了使用ORM的位置.
我得到了与NHibernate合作的概念证明......但是有很多管理人员推迟使用"不支持的""开源"工具.
有关其他ORM解决方案的建议吗?或NHibernate论点的建议?
非常感谢.
我最近使用Knockout和ASP.NET MVC4将Breeze添加到了一个项目中.我非常喜欢Breeze,它可以节省大量代码.
我已经使用了Knockout验证,比如它如何验证数据条目中的属性字段文本框以及错误消息的显示方式.
我想用在验证要求在后端用C#限定在所述对象的属性的属性的组合,则验证的要求在元数据接收,然后敲除验证都可以使用.
我想我可以通过在前端定义属性并应用Knockout验证来解决这个问题
Run Code Online (Sandbox Code Playgroud)classProperty.extend({ required: true }) .extend({ minLength: 3 });有没有办法使用Knockout验证而无需在前端应用验证要求?如果没有,你在考虑这样做吗?
这个问题是由johnvarney在我们的IdeaBlade论坛上发布的.我在这里重新提出问题和答案,因为我认为它对Breeze Stack Overflow社区有用.
VS2012 MVC4中的某些单页面应用程序(SPA)模板具有内置身份验证.HotTowel SPA模板没有.
在SPA HotTowel中实现用户身份验证(登录屏幕)的正确方法是什么?HotTowel使用Durandal JS,所以我想问题是如何使用Durandal JS实现用户身份验证
asp.net-mvc-4 single-page-application breeze durandal hottowel
我正在使用Breezejs作为客户端JavaScript.我不确定在使用应用了filters(where子句)的Breezejs(使用IQueryable的服务器端)时如何获取查询的总计数.
breeze ×7
devforce ×3
knockout.js ×3
c# ×2
upshot ×2
.net ×1
asp.net-mvc ×1
database ×1
durandal ×1
foreach ×1
hottowel ×1
linq ×1
linq-to-sql ×1
many-to-many ×1
mvvm ×1
nhibernate ×1
orm ×1
silverlight ×1
wpf ×1