代码之家  ›  专栏  ›  技术社区  ›  Patrick Karcher

新的asp“showat”属性在vs2010中的要求不一致。为什么?

  •  4
  • Patrick Karcher  · 技术社区  · 16 年前

    当我在visual studio 2010中使用t4模板生成代码时,当我尝试编译时,每个asp控件都会出现以下错误:

    控件“ddstate”缺少必需的属性“showat”。

    在以前的.NET版本中,我从未遇到过这个错误。此外,我 不要 当我通过拖放手动构造页面时,或者当我自己键入控件文本时,都不会得到此错误。生成代码时,必须手动添加 showat="client" 给我的标签让编译器高兴。据我所知,我从来没有明确指定过这个标记。以下内容:

    <asp:dropdownlist id="ddState" runat="server" showat="client" />
    

    解决问题。为什么我必须将此添加到生成的代码中,而不是其他时间?

    (这是一个VS-2010的Webforms项目,使用VB,以防万一。)

    5 回复  |  直到 14 年前
        1
  •  1
  •   Chris Anderson    16 年前

    检查在使用IDE添加控件时,VB是否在Web窗体设计器页中执行任何操作。我不确定vb如何插入隐式标记。但这将是t4模板会错过的,只是一个想法…

        2
  •  3
  •   Vivian River    16 年前

    显然.net 5或其他超级服务包将允许 目标渲染 . 它最初只打算在webforms的上下文中使用,但是我最近听说在mvc(使用一些helper类)和使用wcf的服务中会有一些奇特的方法使用它。它可以很好地处理动态数据,但与之耦合非常松散;您可以完全独立地使用其中一个。如果使用某些标记配置动态数据,则可以在客户端上构造它,等等。

    为了 现在 只要放 showat="client" 在你所有的标签上,一切都很好。这应该是默认的,但我听说过ide似乎需要它的情况。在 未来 , showat=“客户” 无论如何,这将是最安全的设置,99.9%的情况下会有预期的行为。

        3
  •  2
  •   kasabb    16 年前

    这在vb中是必需的,而不是c,这就是为什么有时似乎不需要它的原因。更具体地说,C编译器将 showat=client 自动进入IL,除非指定 摊牌 目标 以外 client .

        4
  •  2
  •   ihillVT    16 年前

    “showat=”client“目前对您的编码应该没有什么影响。它的主要目的是为了将来的wcf输出目标,他们希望它向后兼容。目前,唯一可能的值是“client”,但在未来,将有其他可能的值允许预呈现缓存值,并显然“推送”输出到服务。我在上一个代码集中营看到的例子是,为了日志/调试的目的,可以将服务推送到(可能)同一站点以及客户机。你会有类似的东西(用你的例子):

    <asp:dropdownlist id="ddlCP" runat="server" showat="client, logService" />
    

    . …然后渲染会转到日志文件。或者,对你的会话提供者(如果你有多个web服务器并且正在实现一个共享的会话提供者),等等。 logService 上面的内容必须在web.config或其他文件中定义。

        5
  •  1
  •   aeisenbe    16 年前

    同意我的VS2010为你解决这个问题。然后你可以完全移除标签。我建议升级。599美元的升级费很管用。否则,请在所有标记中添加showat=“client”。我想那个新星是对的,虽然我还没有测试过。