代码之家  ›  专栏  ›  技术社区  ›  Armstrongest

在网络控件中使用`<%=`是个坏主意吗

  •  3
  • Armstrongest  · 技术社区  · 14 年前

    最近我开始使用 <%=

    这是个坏主意吗?

    代码隐藏:

    属性:

    public string TheTitle { get; set; }
    public string TheBody { get; set; }
    public ContentItem TheContent { get; set; }
    public string ContentId { 
      get 
        { return "content" + (TheContent != null) ? TheContent.Id.ToSTring() : "0"; }
    }
    

    页面加载:

    TheTitle = TheContentItem.Title;
    TheBody = TheContentItem.Body;
    

    第页:

    <div id='<%= ContentID %>'>    
    
      <h2 class='title'><%= TheTitle ?? "No Title" %></h2>
      <p><%= TheBody %></p>
    
    </div>
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   kbrimington    14 年前

    这只是数据未经验证时的问题。

    <%: TheBody %> 语法是对潜在的不可信数据进行编码的有效方法。在早期版本的框架中,可以使用 <%= HttpUtility.HtmlEncode(TheBody) %> 同样的效果。

        2
  •  2
  •   Darin Dimitrov    14 年前

        3
  •  1
  •   Kelsey    14 年前

    不,这不是问题,因为它的范围将由你控制。在这种情况下,您不必担心任何冲突,但是如果您使用id编写服务器控件,则可能会遇到问题。

    编辑: 在将其分配给变量之前,您可以使用 HttpUtility.HtmlEncode 或者如果你用ASP.NET4您可以使用 <%: 语法取决于输出的内容。这和使用aspx的规则是一样的,没关系,但是你需要小心。这也是ASP.NET使用MVC。这些视图可以用 <%= <