0

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

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

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

Container.DataItem 来自 Datalist 的 DataSource。

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

<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;
    }
}
4

3 回答 3

2

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

<% %>     -- 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")) %>'
于 2013-10-19T14:01:32.400 回答
0

回答您的问题:

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")); %>'
于 2013-10-19T14:09:43.113 回答
0

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

visible = '<%# DisplaySpace(System.Web.UI.DataBinder.Eval(Container.DataItem, "product_id").ToString())%>' 
于 2013-10-19T14:00:47.297 回答