我做了很多"设计你自己的____"应用程序.
我所做的是创建一个单例类来保存用户选择的所有自定义.例如:当您选择想要绿色的东西时,它会将单例中的getter/setter更新为绿色.然后当应用程序需要知道选择了什么颜色时,它会从同一个getter/setter获取信息.
我以前这样做的方法是将信息存储在UI中(只需检查从下拉列表中选择的颜色).
在阅读了MVC之后(我仍然没有"完全"理解MVC)我现在知道这是完全错误的,这就是为什么我将它抽象为包含所有这些的单例类.
现在我想知道这是不是一个坏主意?如果是这样我该怎么办呢?
谢谢.
我对SVN比较新,并且有一个相当基本的问题.
我为Web项目提供了几个小版本的资源图像.今天设计师更新了其中一个资源,所以我应该更换它.
是首先通过svn-delete更新此文件,提交然后svn添加新文件的唯一方法吗?
编辑
如响应中所述,我可以覆盖该文件.
上次我尝试过,我在提交时遇到了一堆校验和错误.一定是其他原因..
在我的asp.net-mvc应用程序中,我有一个调用静态CreateContainer()方法的statis MvcApplication.
在这个方法中,我创建了我的统一ioc容器:
private static IUnityContainer CreateContainer()
{
var container = new UnityContainer();
container.RegisterType<IConfigurationService, ConfigFile>();
container.RegisterType<ILoggerService, NlogLoggerService>();
container.RegisterInstance<ISearchService>(
new LuceneSearchService(
container.Resolve<IConfigurationService>(),
container.Resolve<ILoggerService>()),
new ContainerControlledLifetimeManager());
}
Run Code Online (Sandbox Code Playgroud)
如果我理解我的源代码,这应该给我一个单独的LuceneSearchService实例.然而,在我的日志记录中,我可以看到每次请求此实例时我的构造函数都会被命中.
我究竟做错了什么?
说我有
type
TLight = class
private
Ftimer : TTimer;
property IsAutoRotating: Boolean read Ftimer.Enabled;
Run Code Online (Sandbox Code Playgroud)
显然,这不会编译,但为什么不编译,以及如何解决这个问题(最好不要将该状态保持在单独的var中.
我创建了一个html帮助器
Html.BreadCrumb(IDictionary<string, string> crumbs)
Run Code Online (Sandbox Code Playgroud)
第一个字符串是标签,第二个字符串是URL.帮助器创建所需的html(无序列表,第一个元素的一些类,当前元素,最后一个元素,死元素和分隔符等)所有工作都很好,但我这样做是通过创建一个stringbuilder,将所有html抽入其中并返回stringbuilder的内容为字符串.
我在这个例子中认为它并不重要,但如果一个Html助手正在制造大量的html怎么办?有没有办法将它推送到Response.Write而不是stringbuilder?
或者你有任何其他问题/改进?
我一定做错了什么
public interface IActor
{
//actor stuff
}
public class BaseShip : IActor
{
//base ship stuff
}
public class PlayerShip: BaseShip
{
//Only the stuff for this particular ship
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用:
IActor player = new PlayerShip();
Run Code Online (Sandbox Code Playgroud)
要么
List<IActor> actors = new List<IActor>(){new PlayerShip()};
Run Code Online (Sandbox Code Playgroud)
我得到无法从[PlayerShip]转换为[IActor]
注意:为简洁起见,剪切代码
我意外地在两个不同的命名空间中定义了接口.没有更多的东西.
如果您查看以下演示HTML,您会看到所有浏览器页面顶部都有一个意外的橙色边框(我已选中).如果<p>标记被<div>标记替换,那么一切都像预期的那样工作.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test Lay-Out</title>
<style>
html{
overflow: auto; /*for IE*/
height: 100%;
}
body{
background-color: orange;
margin: 0;
height: 100%;
}
#page{
background-color: green;
height: 100%;
margin-bottom: -50px;
}
#footer{
background-color: red;
height: 50px;
}
</style>
</head>
<body>
<div id="page">
<p>test</p>
</div>
<div id="footer">footer</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是因为<p>有一个上边距,并且通过边框折叠会折叠到父元素.虽然这是创建文本段落等所需的效果,但它很少用于布局.
如何确保边界不会升级到某些元素(在这种情况下从<p;到父div)?
--UPDATE--
因为答案似乎都在"禁用段落上的填充"道路上,我重新设计了我的问题并改变了标题.
从p中移除填充是一种消除症状的方法,而不是原因.
它有一些特殊含义吗?我将用户名存储在我的HTML中的隐藏字段中,并且所有用户名都可以工作,但是我的(这是DOMAIN \她的......)失败了,当它被Javascript(JQuery)选中时,它最终会像"DOMAINhers ..."一样.
有任何想法吗?
更新 (制定错误的问题,见下面的说明)
我有一个对象,它有一组以数字命名的属性,如示例所示."编号名称"不一定是连续的,也不知道它们的起点或终点.我知道其他属性不会用数字命名.
我知道myObject ["propName"]与myObject.propName相同,但我故意以第一种方式编写它,因为myObject.0看起来很怪异并且没有被所有编辑器识别.
如何获得最小和最大数组索引?
所以在这种情况下
myObject["0"] = undefined
myObject["1"] = {}
myObject["2"] = undefined
myObject["3"] = {}
myObject["4"] = {}
myObject["5"] = undefined
myObject["someOtherProperty"] = {}
Run Code Online (Sandbox Code Playgroud)
会给我这个
minIndex(myObject) == 1
maxIndex(myObject) == 4
Run Code Online (Sandbox Code Playgroud)
在此编辑之前的所有答案
感谢您的回复.我不应该急着发布这个问题,应该在提交之前重新阅读.已经晚了,我赶时间.我很抱歉.
通过实际看到我的错误语句(使用数组而不是对象)我认为,基于我重新形成的问题的答案,我可能需要重写我的代码以使用数组而不是对象.我使用对象而不是数组的原因是另一个问题的材料.
到目前为止,
我已经尝试找到一种方法将属性名称转换为数组,然后循环遍历它们,但这已经证明了这一点.我正在寻找一种不易出错且优雅的方式.
c# ×2
html ×2
javascript ×2
oop ×2
.net ×1
asp.net-mvc ×1
css ×1
delphi ×1
escaping ×1
html-helper ×1
performance ×1
properties ×1
singleton ×1
svn ×1
tortoisesvn ×1