ASP数据列表任何人都可以详细解释

本文关键字:解释 都可以 任何人 数据 列表 ASP | 更新日期: 2023-09-27 18:36:00

我还是 asp.net 新手。我有一些问题想问,我来自php和c ++。

第一个问题。在 html 或 aspx 中。如果我想编写 c# 代码,通常 <% %> 应该可以工作,但底部 3 之间有什么区别。

<% %>
<%@ 
<%# %>

Container.DataItem 来自 Datalist 的 DataSource。

其次,代码的底部给了我错误。因此,我想给出一个解释。对我来说,在 c++ 中似乎是合法的。错误 参数无效?从 msdn 评估应返回对象或字符串

<div class="newPanel">
  <asp:DataList ID="DataList_News" runat="server" CssClass="newPanel">
      <ItemTemplate>
          <div class="news"></div>
          <div id="news_space" runat="server" visible="<%# DisplaySpace(System.Web.UI.DataBinder.Eval(Container.DataItem, "product_id")); %>"></div>
      </ItemTemplate>
  </asp:DataList>
</div>

public partial class CommonCx_captcha_displaynews : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
      DataList_News.DataSource = MySqlManager.ExecuteSelectCommand("select * from news;");
      DataList_News.DataBind();
    }
    public bool DisplaySpace(System.String id)
    {
        return false;
    }
}

ASP数据列表任何人都可以详细解释

这些被称为内联服务器标签,基本上它们用于;

<% %>     -- For embeding a code block
<%@ %>    -- For defining a page directive
<%# %>    -- For data binding 
<%= %>    -- For accessing a variable or return value of a method
<%$ %>    -- For accessing AppSettings
<%-- --%> -- For commenting

这两个链接有很好的示例,具有精确的定义/语法。链接 1链接 2

对于第二个问题,我认为这就足够了

visible='<%# DisplaySpace(Eval("product_id")) %>'

您的方法需要字符串,因此将发送参数转换为字符串

visible = '<%# DisplaySpace(System.Web.UI.DataBinder.Eval(Container.DataItem, "product_id").ToString())%>' 

回答你的问题:

1) 内联服务器标记用于将服务器代码写入标记:

<%= %> - is used to resolve an expression and return its value into the block.
<%@ %> - attributes used by the ASP.NET page parser and compiler.
<%$ %> - expression sintax to reuse code in the markup.
<%# %> - data binding  syntax

2) 您必须在 aspx 中使用单引号括起 C# 代码,这就是您收到错误的原因:

'<%# DisplaySpace(System.Web.UI.DataBinder.Eval(Container.DataItem, "product_id")); %>'