在c#中编写所有内容而不是使用Web控件是好还是坏?

时间:2011-02-10 07:31:08

标签: c# html web-controls

我对在ASP.NET中获得结果的几种方法之间的选择感到困惑。

例如,Web表单控件SqlDataSource,您从数据库中检索数据并在其他控件中显示结果,例如DataGridViewBulletedList等。但是所有这些都可以用C#编写,创建一个字符串,用于保存包含已检索数据的HTML代码,然后使用div将Html代码插入innerHTML。有什么区别?

示例:

[ <div id='block1' runnat='server'></div]  

和CodeBehind

[ block1.innerHTML = myString;]

编写C#代码SqlConnect,Loops,Datatable后,将HTML字符串的值放入myString。

为什么不用C#实现一切?

3 个答案:

答案 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>

我可以:

  • 清楚地看到一目了然代码如何映射到我可以在客户端看到的来源
  • 自信地进行更改,包括视觉检查和IDE 告诉我我是否做了明显错误的事情
  • 轻松比较设计师的草稿

答案 2 :(得分:2)

主要是出于维护原因。

您能想象一下对它进行更改或调试它有多困难吗?而且由于它不是一种传统的方法,任何程序员在你之后必须处理该代码当然不会对它感到满意。

永远记住,

  • HTML用于标记(例如,建筑物)
  • UI自定义/样式转到CSS,主题用于服务器控件自定义(例如,Paint)
  • C#(或具体的代码隐藏)用于逻辑(例如,设施或布线)。