前端代码中的强类型或弱类型绑定?

时间:2010-02-23 00:09:50

标签: asp.net asp.net-mvc strong-typing weakly-typed

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

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

ASPX页面:

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

代码背后:

litTextToInsert.Text = objData.MyText;

OR(转发器):

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的大多数演示,我看到很多人只是将绑定代码丢弃到前端

即:

ASPX页面:

<%#Eval("MyText") %>

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

对于强类型版本,如果你的DAL中的某些内容发生了变化,那么构建就会中断 - 让我知道我已经搞砸了。

为什么这么多人出现在ASP.Net中使用弱类型代码(在示例中,MVC等)? 我错过了什么吗? 我是一个白痴,错过了这一点吗? 这只是因为它的演示代码试图变得更简单吗?

让我知道。

2 个答案:

答案 0 :(得分:1)

你说的是在.aspx页面上使用绑定表达式意味着你不会因错误的语法/用法而得到编译时警告。你可以将其视为弱点或力量。

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

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

同样,请遵守背后的代码:

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

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

在我看来 - 你应该使用你感觉舒服的东西。有些人在.aspx页面中专门使用绑定表达式,绑定了一个大对象图,它对它们很有用。其他人将确保他们只在代码隐藏文件中这样做,并且它也适用于他们。

答案 1 :(得分:1)

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

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