在查看我们的工作代码库时,我看到了这种类型的代码:
private Button AddClearButton()
{
return new Button
{
OnClientClick =
string.Format(@"$('.{0}').css('background-color', '#FBFBFB');
$('#' + {1}).val('');
$('#' + {2}).val('');
return false;", _className, _hiddenImageNameClientId, _hiddenPathClientId),
Text = LanguageManager.Instance.Translate("/button/clear")
};
} 或
_nameAndImageDiv = new HtmlGenericControl("div");
var imageDiv = new HtmlGenericControl("div");
imageDiv.Attributes.Add("style", "width: 70px; height: 50px; text-align: center; padding-top: 5px; ");
var nameDiv = new HtmlGenericControl("div");
nameDiv.Attributes.Add("style", "width: 70px; word-wrap: break-word; text-align: center;");
var image = new HostingThumbnailImage();免责声明:我以前没有使用过CSS。但是我听说我们应该分开css,js,html,C#,而不是把它们放在一起。
那么,上面的代码是不是很糟糕?如果是,更好的方法是什么?
发布于 2011-05-18 12:42:21
在我的头顶上,我可以想到几个问题,但不是致命的。
没有特定的顺序:
我肯定有一堆我错过了。
发布于 2011-05-18 12:35:06
这不是CSS,而是使用jQuery库的JavaScript。你的怀疑是对的,这段代码有几个"smelly“部分:
OnClientClick会产生一个onclick=""属性,这不如绑定事件好。background-color - CSS类会更好,这种颜色可能在代码或CSS文件中被复制了很多次,并且需要很多工作来改变(重新部署站点代码,而不是依赖于资源文件)。更好的方法是使用CssClass:imageDiv.CssClass = "imageDiv";
并在CSS文件中包含:
.imageDiv {宽度: 70px;高度: 50px;文本对齐:居中;填充顶部: 5px;}
这使您可以轻松地更改设计,并根据上下文设置不同的imageDiv样式(例如,当它在侧边栏中时,它可能会更小,使用带有JavaScript/CSS的String.Format的选择器.sidebar .imageDiv)
.css({'color': '#FBFBFB', 'border-color':"green"})。在这段代码中,它应该写成字符串的.css({{'color': '#FBFBFB', 'border-color':""green""}})转义双引号,以及您提到的String.Format.
发布于 2011-05-18 12:35:43
生成的代码实际上是Javascript,尽管它操作了一些元素的CSS。
我会说最好的方法是在页面加载时执行它。如果你只需要将一个函数绑定到click event,你可以在Javascript/JQuery中完成这一切,就像这样:
$("#<%= this.TheButton.ClientID %>").click(function () {
$("...").css("...", "...");
// ...
});我怀疑ASP.NET目前只是用onclick=生成一个按钮,这通常被认为是Javascript编程的糟糕做法,但这并不是一个大问题。
在我看来,这里的一般问题是视图和模型逻辑可能混合在一起,但在传统的ASP.NET中很难避免。
https://stackoverflow.com/questions/6039846
复制相似问题