我还是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;
}
}
答案 0 :(得分: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
这两个链接具有确切定义/语法的良好示例。 Link1 和 Link2
对于第二个问题,我认为这就足够了
visible='<%# DisplaySpace(Eval("product_id")) %>'
答案 1 :(得分:0)
您的方法需要字符串,因此将发送参数转换为字符串
visible = '<%# DisplaySpace(System.Web.UI.DataBinder.Eval(Container.DataItem, "product_id").ToString())%>'
答案 2 :(得分: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")); %>'