我想我会问这个问题,看看为什么很多例子和人们更喜欢在aspx代码中使用内联数据绑定而不是在使用WebForms时实现OnDataBinding事件.
对于任何数据绑定控件(例如,Repeater,GridView等),我总是为字段级控件实现OnDataBinding方法,如果我需要做任何不是开箱即用的东西(例如,我需要做一个Eval).我看到的大多数示例都使用内联<%#语法在aspx页面中使用了正确的代码.
内联ASP.NET代码示例:
<asp:Literal ID="litExample" runat="server"
Text='<%# Eval("ExampleField").ToString() %>' />
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样做的例子:
在aspx中:
<asp:Literal ID="litExample" runat="server"
OnDataBinding="litExample_DataBinding" />
Run Code Online (Sandbox Code Playgroud)
在codebehind .cs中:
protected void litExample_DataBinding(object sender, System.EventArgs e)
{
Literal lit = (Literal)(sender);
lit.Text = string.Format("{1} - {2}",
Eval("ExampleField").ToString(),
Eval("ExampleField2").ToString());
}
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢codebehind方法,因为它保持我的aspx页面干净,并且我没有所有这些内联代码,而下一个人只知道总是查看.cs文件中的代码更改.表示和代码的分离也以这种方式保持得更好,因为HTML只是占位符,而代码绑定正在确定实际控制的内容.
现在这些是非常基本的例子.该字段可以是您想要使用前导0格式化的整数,也可以是需要特定格式等的DateTime.它还可以采用所有类型的操作和代码来获取应存储在"Text"属性中的finally值.结束.
如果使用内联代码,在哪里绘制线并将其移动到代码隐藏?
这样做的优点和缺点是什么?
一个人比另一个人花费更多的开销吗?
编辑注意:我不是在谈论为页面上的控件分配值,而是将数据库分配给,因为它存在于转发器模板或gridview项目模板等中...显然,文字坐在页面上可以只在代码中分配.
编辑注意:我想我会收集更多响应,特别是关于开销.大多数人不使用OnDataBinding事件吗?
我的代码如下:
lblFranshizShowInvwNoskhehEdit.Text = string.Format("{0:n}",
(double)(int.Parse(drDarman["FranshizDarsad"].ToString()) *
Convert.ToInt64(RadNumerictxtPayInvwNoskhehEdit.Text)) / 100);
Run Code Online (Sandbox Code Playgroud)
但{0:n0}字符串格式强制标签的文本不具有十进制数字,{0:n}字符串格式强制标签的文本具有2个十进制数字(默认).
在我的场景中,我只想在必要时使用十进制数字/不进行舍入/我该怎么做?
我有一个DataTable我需要放入Excel 2007格式并将其保存为Excel文件(.xlsx)2007.
任何人都可以帮我实现这个目标吗?
是否有可能编写一个查询,我们从任何给定的字符串中获取所有可以解析为int的字符?
例如,我们有一个字符串,如: "$%^DDFG 6 7 23 1"
结果必须是 "67231"
甚至更轻微一点:我们只能获得前三个数字吗?
我们在Windows 2008R2上有一个运行IIS 7.5的Web场环境.我们使用共享配置和Web存储复制.
我们尝试在其中一台服务器上安装Web Deploy(v3.5),但收到一条错误消息,指出共享配置不支持Web部署.
是否可以在共享配置环境中运行Web Deploy?如果是这样的话?
注意:我们已经弄清楚了,所以我在这里发布答案.我们可以在这个主题上找到很少甚至没有文档,所以我认为最好在这里托管信息,以便世界其他地方可以轻松找到它.
这将是我的第一个带有表单身份验证的ASP.NET MVC应用程序,所以我试图确保我不会错过任何东西.场景是这样的:公共/安全区域.
在私人区域内,它甚至进一步限于特定区域/用户.这些"区域"由对每个用户组自定义的基本区域的自定义定义.
例如,用户可以访问url /Area/Controller/Action.他们需要获得安全区域的许可,否则他们将被重定向到登录视图.
我一直在阅读AuthorizeAttribute但我不确定我应该如何/在哪里进行这些基本检查.我最初的预感是在用户的IP成功登录以及他们有权访问的内容等详细信息后,在会话中存储用户对象.
每个安全控制器调用的授权检查将验证会话中是否存在有效用户对象,IP仍然匹配,并且用户可以访问特定区域.这个设置有没有明显的漏洞?
编辑:在哪里/如何实现这些检查,以便当控制器被[授权]标记时,它将执行那些会话对象检查?
任何指针或建议将不胜感激.谢谢.
我有一个Web应用程序(asp.net)需要有一个feed.所以我使用System.ServiceModel.Syndication命名空间来创建创建"新闻"的函数.事情就是每当有人调用它时执行它,我应该只使用它来创建一个xml文件并使我的rss url指向该文件?
什么是最好的方法?
编辑:也许这就是我错了.我没有使用处理程序......我只是使用WCF服务返回带有数据的Rss20FeedFormatter.
我有一个基本的查询,从6秒到1秒只需将一个连接更改LEFT JOIN为LEFT HASH JOIN"LEFT LOOP JOIN".任何人都可以解释为什么这会导致性能如此大幅度增加以及为什么SQL的优化器不能自己解决它?
这大致是SQL的样子:
SELECT
a.[ID]
FROM
[TableA] a
LEFT HASH JOIN
[TableB] b
ON b.[ID] = a.[TableB_ID]
JOIN
[TableC] c
ON c.[ID] = a.[TableC_ID]
WHERE
a.[SomeDate] IS NULL AND
a.[SomeStatus] IN ('X', 'Y', 'Z') AND
c.[SomethingElse] = 'ABC'
Run Code Online (Sandbox Code Playgroud)
表A和B在所有ID字段上都有数百万条记录和索引.使用SQL Server 2005.
编辑:一位同事提出了LEFT LOOP JOIN,它似乎让它更快...... SQL不是我的优势之一,所以我试图理解这些"暗示"是如何帮助的.
以下两段代码之间有什么区别:
using (Object o = new Object())
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
和
{
Object o = new Object();
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我已经开始使用using更多但是我很好奇与范围对象相比实际上有什么好处.
编辑:我从中获取的有用花絮:
Jon Skeet:
请注意,这不会以任何方式,形状或形式强制进行垃圾收集.垃圾收集和快速资源清理有些正交.
埃德斯会评论:
除非您的类实现了IDisposable接口,并且具有Dispose()函数,否则不要使用.
我需要显示经过时间跨度的最简单版本.有没有准备好的事情呢?
样品:
HH:mm:ss
10:43:27 > 10h43m27s
00:04:12 > 4m12s
00:00:07 > 7s
Run Code Online (Sandbox Code Playgroud)
我想我需要一个格式提供程序来消磨时间.
c# ×7
asp.net ×4
architecture ×1
asp.net-mvc ×1
c#-4.0 ×1
code-behind ×1
coding-style ×1
datatable ×1
decimal ×1
excel ×1
format ×1
formatting ×1
iis ×1
iis-7 ×1
join ×1
linq ×1
numbers ×1
optimization ×1
performance ×1
rss ×1
scope ×1
security ×1
sql ×1
sql-server ×1
string ×1
syndication ×1
timespan ×1
using ×1
webdeploy ×1