我有一个Marionette.CollectionView呈现ItemViews 的列表.期间render(),我使用ItemView model来使用Raphael绘制一些SVG .
拉斐尔要求我指定画布的高度和宽度,我通常会从中获取this.$el.但是,$el(作为一个空<div>)没有维度,直到它被添加到DOM并且CSS规则应用于它,所以我需要延迟渲染,直到我知道视图在DOM中.
问题是,Marionette.CollectionView在呈现之前,不会向DOM添加子视图.如何在不重新实现一半的情况下覆盖此行为CollectionView?
// Renders a single object.
var ItemView = Marionette.ItemView.extend({
template: "#item-view-template",
onRender: function() {
var svgEl = this.$el.find("div.svg-canvas");
// Raphael needs the element's width and height, which
// is 0 until this.$el is in the DOM.
var paper = Raphael(svgEl.get(0), svgEl.height(), svgEl.width());
// ... draw some SVG...
}
});
// Renders a …Run Code Online (Sandbox Code Playgroud) 我正在处理的Web应用程序的一部分是一个区域,显示从管理到1 ... n个用户的消息.我有一个包含LINQ to SQL类的DataAccess项目,以及一个作为UI的网站项目.我的数据库看起来像这样:
用户 - > MessageDetail < - 消息< - MessageCategory
MessageDetail是一个连接表,它还包含一个IsRead标志.
消息列表按类别分组.我在页面上有两个嵌套的ListView控件 - 一个输出组名,而另一个嵌套在内部,绑定到MessageDetails并输出消息本身.在列出消息的页面的代码隐藏中,我有以下代码:
protected void MessageListDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
var db = new DataContext();
// parse the input strings from the web form
int categoryIDFilter;
DateTime dateFilter;
string catFilterString = MessagesCategoryFilter.SelectedValue;
string dateFilterString = MessagesDateFilter.SelectedValue;
// TryParse will return default values if parsing is unsuccessful (i.e. if "all" is selected"):
// DateTime.MinValue for dates, 0 for int
DateTime.TryParse(dateFilterString, out dateFilter);
Int32.TryParse(catFilterString, out categoryIDFilter);
bool …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用AutoMapper,到目前为止发现它非常直接且节省时间.
只有一点我不确定 - 如何以相同的方式映射给定类型的所有属性?
可以使用lambda在单个语句中使用AutoMapper来完成,与常规映射一样吗?
我正在尝试在我的单元测试中使用以下代码,
/* Test setup code */
_routes = RouteTable.Routes;
MvcApplication.RegisterRoutes(_routes); //set up the routes as they would be in actual application
/* test code */
Expression<Func<SearchController, ActionResult>> actionFunc;
actionFunc = action => action.Results("x", 3, null);
RouteTestingExtensions.Route(
"~/Search/Results?searchText=x"
).ShouldMapTo<SearchController>(actionFunc);
Run Code Online (Sandbox Code Playgroud)
问题是,这是失败的"预期结果是结果?searchText = x"
有没有人有一个解决方案可以让我测试一个URL(带有查询字符串)解析为正确的控制器,动作和参数?
仅供参考,我在Global.asax.cs中没有明确的路由设置,因为默认路由适用于实际的应用程序 - 它只是在此测试中不起作用.
我正在使用Fluent NHibernate映射一个包含如下字符串集合的类:
public class Foo {
public virtual ICollection<string> Strings { get; set; }
}
public class FooMap : ClassMap<Foo> {
public FooMap() { HasMany(f => f.Strings).Element("SomeColumnName"); }
}
Run Code Online (Sandbox Code Playgroud)
当我使用PersistenceSpecificationFNH包中包含的类编写单元测试时,它会失败:
[TestMethod]
public void CanMapCollectionOfStrings() {
var someStrings = new List<string> { "Foo", "Bar", "Baz" };
new PersistenceSpecification<Foo>(CurrentSession)
.CheckList(x => x.Strings, someStrings) // MappingException
.VerifyTheMappings();
}
Run Code Online (Sandbox Code Playgroud)
NHibernate.MappingException: No persister for: System.String调用时会抛出此测试CheckList().但是,如果我试着自己坚持这个对象,它就可以了.
[TestMethod]
public void CanPersistCollectionOfStrings() {
var foo = new Foo {
Strings = new List<string> …Run Code Online (Sandbox Code Playgroud) 我正在尝试设计一个包含两列内容的页面,div#left和div#right.(我知道这些不是正确的语义标识符,但它使解释更容易)两列的宽度是固定的.

期望的结果 - 宽视口
当视口太窄而无法并排显示时,我希望#right堆叠在#left之上,如下所示:

期望的结果 - 狭窄的视口
我的第一个想法只是应用于float: left#left和float: right#right,但这使得#right 将自己附加到窗口的右侧(float毕竟这是正确的行为),留下一个空的空间.当浏览器窗口非常宽时,这也会在列之间留下很大的差距.

错误 - div#right与视口的左侧不齐平
应用float: left到两个的div会导致错误的一个移动至底部时,窗口太小了.

错了 - div#right不在div#left之上
我可以用媒体查询做到这一点,但IE直到版本9才支持这些.源顺序不重要,但我需要一些在IE7中工作最少的东西.这可能不借助Javascript吗?
在NHibernate 3.1中,ISession.SaveOrUpdateCopy()已被标记为已弃用.文档建议使用Merge().每个文件如下:
SaveOrUpdateCopy(object obj)将给定对象的状态复制到具有相同标识符的持久对象上.如果当前没有与会话关联的持久性实例,则将加载该实例.返回持久化实例.如果给定实例未保存或数据库中不存在,请保存它并将其作为新的持久实例返回.否则,给定实例不会与会话关联.
Merge(object obj)将给定对象的状态复制到具有相同标识符的持久对象上.如果当前没有与会话关联的持久性实例,则将加载该实例.返回持久化实例.如果给定实例未保存,请保存副本并将其作为新的持久实例返回.给定的实例不会与会话关联.如果映射关联,则此操作级联到关联实例
cascade="merge".
该方法的语义由JSR-220定义.
他们看起来几乎与我相同,但必然会涉及一些细微之处.如果是这样,他们是什么?
我在UITableViewCell中有一个UITextField.由于某种原因,清除按钮未与textField的文本对齐.这是我的textField代码:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
usernameField = [[UITextField alloc] initWithFrame:CGRectMake(22, 10, cell.contentView.frame.size.width, cell.contentView.frame.size.height)];
usernameField.adjustsFontSizeToFitWidth = YES;
usernameField.placeholder = @"Username";
usernameField.backgroundColor = [UIColor clearColor];
usernameField.keyboardType = UIKeyboardTypeDefault;
usernameField.autocapitalizationType = UITextAutocorrectionTypeNo;
usernameField.autocorrectionType = UITextAutocorrectionTypeNo;
usernameField.returnKeyType = UIReturnKeyNext;
usernameField.delegate = self;
usernameField.clearButtonMode = UITextFieldViewModeAlways;
[usernameField setEnabled:YES];
[cell addSubview:usernameField];
[usernameField becomeFirstResponder];
[usernameField release];
Run Code Online (Sandbox Code Playgroud)
这是展示问题的图片:

编辑:我也试过,- (CGRect)clearButtonRectForBounds:(CGRect)bounds但仍然没有
我正在开发一个具有与此类似的域模型的应用程序,其中a LineItem既可以从a 也可以Order从a 引用Shipment.

如果我使用AutoFixture生成Order,我该如何使用相同的一组LineItems两个order.LineItems和order.Shipments*.ItemShipments*.LineItem?
从理论上讲,以下测试应该通过:
var fullyShippedOrder = fixture.CreateAnonymous<Order>();
var shippedLineItems = fullyShippedOrder.Shipments
.SelectMany(o => o.ItemShipment, (s, i) => i.LineItem)
.Distinct();
Assert.EqualCollection(fullyShippedOrder.LineItems, shippedLineItems);
Run Code Online (Sandbox Code Playgroud)
...虽然我也希望能够根据测试生成部分发货的订单.
(有一个可靠的论据,即订单上的订单项和货件上的订单项是不同的东西,我不应该使用相同的类来表示它们.但是,我正在使用的数据来自遗留系统并没有太多可以做的事情.)
我们使用CI服务器(Jenkins)编译ASP.NET项目并部署到我们的Web服务器.
我想在部署之前预编译站点以提高性能,因此我PrecompileBeforePublish在发布配置文件(.pubxml)中设置了该属性.
但是,当Jenkins运行构建时,AspNetPreCompile任务失败并显示错误:
AspNetPreCompile:
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe
-v/
-pc:\ jenkins\workspace\DeployJob\MyProject\obj\Release\AspnetCompileMerge\Source
-c
c:\ jenkins\workspace\DeployJob\MyProject的\ OBJ \发布\ AspnetCompileMerge\TempBuildDirASPNETCOMPILER:错误ASPRUNTIME:当前标识(JenkinsUser)没有对"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"的写入权限.
请注意,这不是将Web站点部署到的计算机,它只是一个构建服务器.我可以授予当前身份(JenkinsUser)访问Temporary ASP.NET Files文件夹的权限,但我宁愿不必在一个只是充当愚蠢的Jenkins奴隶的盒子上搞乱文件系统权限.
有没有办法解决?为什么aspnet_compiler试图将站点写入Temporary ASP.NET Files文件夹,有没有办法让它使用不同的临时目录,例如%TEMP%?
c# ×3
nhibernate ×2
asp.net ×1
asp.net-mvc ×1
autofixture ×1
automapper ×1
backbone.js ×1
css ×1
lambda ×1
layout ×1
linq ×1
linq-to-sql ×1
marionette ×1
msbuild ×1
nhibernate-3 ×1
uitableview ×1
uitextfield ×1
unit-testing ×1