我对在ASP.NET中获得结果的几种方法之间的选择感到困惑。
例如,Web表单控件SqlDataSource
,您从数据库中检索数据并在其他控件中显示结果,例如DataGridView
,BulletedList
等。但是所有这些都可以用C#编写,创建一个字符串,用于保存包含已检索数据的HTML代码,然后使用div
将Html代码插入innerHTML
。有什么区别?
示例:
[ <div id='block1' runnat='server'></div]
和CodeBehind
[ block1.innerHTML = myString;]
编写C#代码SqlConnect,Loops,Datatable后,将HTML字符串的值放入myString。
为什么不用C#实现一切?
答案 0 :(得分:5)
想想最简单的事情。对于简单的情况,使用标记,模板和数据绑定通常是最简单和最简单的,因为所写的大多数是静态标记 - 所以我们可以留在标记的“本地”。但是如果标记可以根据编程逻辑从根本上改变,那么尝试在ASP.NET标记中表达它可能是乏味的。
同时考虑部署和重用 - 模板也可能更容易为单个应用程序维护,但在不同的应用程序中更难打包和重用。
您希望尽量减少工作量和复杂性。实现这些流程可直接减少错误,提高稳定性,并缩短交付时间。因此,请考虑以下方式影响工作量和复杂性:
答案 1 :(得分:3)
在纯C#中编写所有内容是可能的,但是当您尝试实现特定的html布局时不太方便 - 维护很痛苦,并且非常很难与开发人员一起工作,如果你想要的话采取他们的HTML并只是调整它来添加数据。
我个人我会在这里看MVC;例如,我最近一直在玩razor,它允许在同一个文件中使用非常优雅的集成C#和html:
<div id="@obj.Id">
<ul>
@foreach(var item in obj.Items) {
<li>@item.Name</li>
}
</ul>
</div>
我可以:
答案 2 :(得分:2)
主要是出于维护原因。
您能想象一下对它进行更改或调试它有多困难吗?而且由于它不是一种传统的方法,任何程序员在你之后必须处理该代码当然不会对它感到满意。
永远记住,
HTML
用于标记(例如,建筑物)CSS
,主题用于服务器控件自定义(例如,Paint)C#
(或具体的代码隐藏)用于逻辑(例如,设施或布线)。