1

因此,我的问题更多地与人们认为最佳实践以及原因有关:

我一直在将文字放入页面和转发器中,并将它们绑定在代码后面一段时间。这被认为是不好的做法吗?IE:

ASPX 页面:

<asp: Literal id="litTextToInsert" runat="Server" />

代码背后:

litTextToInsert.Text = objData.MyText;

或(中继器):

protected void rpt_ItemDataBoundVersion(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        RepeaterItem objItem = e.Item;
        Data.MyObject objDataItem = (Data.MyObject) objItem.DataItem;
        Literal litMyText= (Literal)objItem.FindControl("litTextToInsert");
        litMyText = objDataItem.MyText;               
    }
}

在大多数关于 MVC 和一般 WebForms 的演示中,我看到很多人只是将绑定代码放入前端

IE:

ASPX 页面:

<%#Eval("MyText") %>

我个人不喜欢这样做,因为我发现它让我更难知道是否有人更改了字段名称,或者在开发过程中输入错误 - 另一种方式在页面加载之前你不会知道。

使用强类型版本,如果您的 DAL 等发生变化,构建将中断 - 让我知道我搞砸了。

为什么这么多人似乎在 ASP.Net 中使用弱类型代码(在示例、MVC 等中)?我错过了什么吗?我是个白痴,没有抓住重点吗?这仅仅是因为它的演示代码试图更简单吗?

让我知道。

4

2 回答 2

1

您说得对,在 .aspx 页面上使用绑定表达式意味着您不会因语法/用法不正确而收到编译时警告。您可以将其视为弱点或优势。

.aspx 页面上的绑定表达式:

  • 允许您更改 .aspx 而无需重新编译和重新部署。
  • 您可以即时添加/更改绑定表达式
  • 减少混乱背后的代码
  • 弱类型
  • 将显示逻辑保留在它所属的位置

同样,竞标后面的代码:

  • 确保您的代码库具有凝聚力(.aspx 页面不会出现分歧)
  • 强类型
  • 静态代码分析会更好

我相信其他人会提出许多其他例子来支持和反对这两种选择。

在我看来 - 你应该使用你觉得舒服的东西。有些人专门在他们的 .aspx 页面中使用绑定表达式,其中绑定了一个大型对象图,这对他们来说非常有用。其他人会确保他们只在文件后面的代码中这样做,这对他们也很有效。

于 2010-02-23T00:19:04.337 回答
1

正如 Oded 所说,在“正常”的 aspx 页面中,绑定不是保存类型,并且您不会收到编译时错误。然而,在 MVC 中,这是另一个杯子,在这里你会得到编译时警告和错误,甚至是智能感知。

在“正常”的 aspx 页面中,事件在需要与 aspx 页面集成的页面后面的代码中处理。在 MVC 中,事件由控制器处理,视图可以被视为“只是一个模板”,就像在经典 ASP 中一样。然而,与经典 ASP 相比的最大优势在于扩展的设计和编译时间支持。

于 2010-02-23T00:24:38.370 回答