我知道微软已经在语义和跨浏览器兼容的XHTML和CSS方面做出了努力,但它似乎仍然是一个可以实现优雅标记的PitA.我已经下载并调整了CSS Friendly Adapters等等.但我仍然觉得自己对臃肿而没有吸引力的代码感到沮丧.
优雅,语义的CSS与ASP.Net仍然是一个梦想?或者它最终可能,我只需要更多的练习?
这是来自具有转发器的ascx的代码:
<asp:Repeater ID="ListOfEmails" runat="server" >
<HeaderTemplate><h3>A sub-header:</h3></HeaderTemplate>
<ItemTemplate>
[Some other stuff is here]
<asp:Button ID="removeEmail" runat="server" Text="X" ToolTip="remove" />
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
在转发器的数据绑定和事件的代码隐藏中:
Protected Sub ListOfEmails_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles ListOfEmails.ItemDataBound
If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim removeEmail As Button = CType(e.Item.FindControl("removeEmail"), Button)
removeEmail.CommandArgument = e.Item.ItemIndex.ToString()
AddHandler removeEmail.Click, AddressOf removeEmail_Click
AddHandler removeEmail.Command, AddressOf removeEmail_Command
End If
End Sub
Sub removeEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Response.Write("<h1>click</h1>")
End Sub
Sub removeEmail_Command(ByVal sender …
Run Code Online (Sandbox Code Playgroud) 我有多个选择:
<select id="one">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<select id="two">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我想要的是从第一个选择中选择"一个",然后从第二个选项中删除该选项.然后,如果你从第二个中选择"两个",我希望从第一个中删除一个.
这是我目前的JS:
$(function () {
var $one = $("#one");
var $two = $("#two");
var selectOptions = [];
$("select").each(function (index) {
selectOptions[index] = [];
for (var i = 0; i < this.options.length; i++) {
selectOptions[index][i] = this.options[i];
}
});
$one.change(function () {
var selectedValue = $("option:selected", this).val();
for (var i = 0; i < selectOptions[1].length; i++) {
var exists = false;
for …
Run Code Online (Sandbox Code Playgroud) 我非常喜欢杰夫关于斯巴达编程的帖子.我同意这样的代码是一种阅读的乐趣.不幸的是,我不太确定与他们一起工作一定会很愉快.
多年来,我一直在阅读并坚持"一行一线"的做法.当许多编程书籍使用示例代码来反驳这个建议时,我已经打了很好的战斗并坚持了下来:
while (bytes = read(...))
{
...
}
while (GetMessage(...))
{
...
}
Run Code Online (Sandbox Code Playgroud)
最近,出于更实际的原因,我提出了每行一个表达式 - 调试和生产支持.从生产中获取一个声明NullPointer异常的日志文件在"第65行",其中显示:
ObjectA a = getTheUser(session.getState().getAccount().getAccountNumber());
Run Code Online (Sandbox Code Playgroud)
令人沮丧,完全可以避免.没有抓住专家的代码可以选择"最可能"的对象是空的......这是一个真正的实际痛苦.
每行一个表达式在步进代码时也有很大帮助.我是在假设大多数现代编译器可以优化掉我刚创建的所有多余的临时对象的情况下练习的...
我试着整洁 - 但是用明确的对象混乱我的代码确实有时会感到费力.它通常不会使代码更易于浏览 - 但是在生产中跟踪事物或者通过我或他人的代码时,它确实派上了用场.
你提倡什么样的风格,你能在实际意义上理顺它吗?
在过去,我不得不开发一个作为规则评估员的程序.你有一个先行者和一些结果(行动),所以如果先行者躲到了真实的行动.
那时我使用了RETE算法的修改版本(有三个版本的RETE,只有第一个是公共的)用于先行模式匹配.我们在谈论一个大系统,每条规则有数百万次操作,一些操作员在几条规则中"重复".
我可能必须用其他语言再次实现它,即使我在RETE中有经验,有没有人知道其他模式匹配算法?有什么建议或者我应该继续使用RETE吗?
我们有一个应用程序必须灵活地向用户显示它的主要形式 - 取决于用户,表单应该略有不同,可能在这里或那里的额外按钮,或一些其他细微差别.为了停止编写代码以显式删除或添加控件等,我转向视觉继承来解决问题 - 我认为这是一个整洁,干净和逻辑的OO风格 - 事实证明,继承表单的一半时间很难在VS中渲染自己没有充分的理由等 - 我觉得开发人员和微软在某种程度上避开了Visual Inheritance的做法 - 你能否证实这一点,我在这里遗漏了什么?
问候.
我有一个Asp.Net 2.0(VB.Net)应用程序,我正在尝试将Control(ASCX)导出到另一个项目.我需要知道Control需要哪些其他文件才能工作.
有没有办法 - 使用VS.Net 2005或外部应用程序 - 以递归方式跟踪解决方案中页面或控件的依赖关系?
例如,对于此文件:~/Controls/SomeControl.ascx
,我想获取以下运行所依赖的文件列表:
~/Controls/SomeControl.ascx
~/Controls/SomeControl.ascx.vb
~/App_Code/SomeClass.vb
~/App_Code/AnotherClass.vb
~/App_WebReferences/com/example/SomeWebService/SomeWebService.disco
~/App_WebReferences/com/example/SomeWebService/SomeWebService.discomap
~/App_WebReferences/com/example/SomeWebService/SomeWebService.wsdl
~/App_Code/AnotherClass.vb
Run Code Online (Sandbox Code Playgroud) 昨天我卷入了关于DOM实现怪癖的讨论,引发了一个关于Text.splitText和Element.normalise行为以及它们应该如何表现的有趣问题.
在DOM Level 1 Core中,Text.splitText被定义为......
将此Text节点分解为指定偏移量的两个Text节点,将两者保留在树中作为兄弟节点.然后,该节点仅包含直到偏移点的所有内容.并且作为此节点的下一个兄弟插入的新Text节点包含偏移点处和之后的所有内容.
标准化是......
将所有Text节点放在此Element下面的子树的完整深度中,形成"正常"形式,其中只有标记(例如,标记,注释,处理指令,CDATA部分和实体引用)将Text节点分开,即有没有相邻的Text节点.这可用于确保文档的DOM视图与保存和重新加载文档的DOM视图相同,并且在使用依赖于特定文档树结构的操作(例如XPointer查找)时非常有用.
所以,如果我采用一个包含"Hello World"的文本节点,在textNode中引用,并且执行
textNode.splitText(3)
Run Code Online (Sandbox Code Playgroud)
textNode现在具有内容"Hello",以及包含"World"的新兄弟
如果我那么
textNode.parent.normalize()
Run Code Online (Sandbox Code Playgroud)
什么是textNode?该规范没有明确表示textNode仍然是它的前一个父节点的子节点,只是更新为包含所有相邻的文本节点(然后被删除).它似乎是一个删除所有相邻文本节点的一个conforment行为,然后重新创建一个具有值的串联的新节点,使textNode指向不再是树的一部分的东西.或者,我们可以以与splitText相同的方式更新textNode,因此它保留了它的树位置,并获得了一个新值.
行为的选择实际上是完全不同的,我无法找到关于哪个是正确的澄清,或者这只是规范中的疏忽(它似乎在2级或3级似乎没有澄清).任何DOM/XML专家都可以解决这个问题吗?
我确定以前发生过这种情况,有些东西在调试模式下运行,你在发布版本中编译,有些东西会中断.
在使用嵌入式XP环境时发生这种情况,我发现这样做的最好方法就是编写一个日志文件来确定它出错的地方.
您尝试解决恼人的发布模式错误的经验/发现有哪些?
我正在构建一个表单,我必须继续使用内联条件来添加一个readonly
html属性:
@Html.LabelFor(model => model.EventDate)
<div class="row">
<div class="col-xs-3">
@Html.EditorFor(model => model.EventDate, new
{
htmlAttributes = Model.IsEditorReadOnly ?
(object)new { @class = "form-control input-lg", @type = "date", @readonly = "readonly" } :
(object)new { @class = "form-control input-lg", @type = "date" }
})
</div>
</div>
@Html.ValidationMessageFor(model => model.EventDate)
Run Code Online (Sandbox Code Playgroud)
您不能仅对@readonly
属性的值使用条件,因为即使将其设置为null,它也会呈现给客户端readonly=""
,这足以让浏览器将该字段设置为只读.
必须有一个更好的方法来做这个,而不是每个表单元素的内联条件只是添加一个属性,对吗?