2012-04-08 85 views
0

我使用这个代码在我的html:如何在HTML中使用C#代码?

<a href="<%# ((bool)Eval("IsLinkToOther")) ? Eval("NewsLink") : ../News.aspx?NewsId=Eval("NewsId") %>"><%# Eval("Title") %></a> 

或本:

<a <%if(((bool)Eval("IsLinkToOther"))) 
    { %> 
    href="<%#Eval("NewsLink")%>"        
<% } %> 
<%else 
    {%> 
    href="../News.aspx?NewsId=<%#Eval("NewsId")%>" 
<% } %> ><%# Eval("Title") %></a> 

,但它不工作,我如何使用它们,请大家帮帮忙,谢谢...

+1

定义不起作用。您是否从支持ASP.net的服务器加载代码? – 2012-04-08 11:16:02

+1

它应该做什么?它实际上做了什么? – Quentin 2012-04-08 11:17:00

+0

我不喜欢判断,但这是一些讨厌的代码。 – 2012-04-08 11:49:23

回答

0

尽最大的尊重,除非绝对必要,否则不要这样做。混合表示层和代码隐藏是一个非常糟糕的习惯。

在我看来,正确的方法是利用你使用asp.net的事实。

Page.aspx

<asp:HyperLink ID="myLink" NavigateUrl="" runat="server" /> 

Page.aspx.cs

myLink.NavigateUrl = SomeClass.IsLinkToOther ? SomeClass.NewsLink : "~/News.aspx?NewsId=" + SomeClass.NewsId; 
+0

这里的一切看起来都像我的演示文稿。丑陋,做得不好......但是介绍。例如,Eval()是一个bata绑定方法。 – 2012-04-08 11:18:48

+0

@AndrewBarber,他包括大括号和逻辑(if,else ...)......这是我最大的抱怨。这对你来说似乎是一个好习惯吗?你能马上看到,发生了什么?这与干净的代码无关,也没有与图层分离。 – walther 2012-04-08 11:21:23

+0

我已经说过这是丑陋的,很糟糕。但它*是*演示代码。 *是*,他这样做**所有**错误......但不以您抱怨的方式。没有理由让你不可能有粗俗的陈词滥调......但是,再次;他**不**正确。 – 2012-04-08 11:24:43

1

纯HTML渲染和解释在客户端上。 C#通常在服务器端使用(例如,在aspx文件中)。

所以要运行,您必须从支持ASP.NET的服务器(如启用了ASP.NET的IIS)为其提供服务。

如果您正在寻找客户端功能,您应该使用Javascript。

1

你有没有尝试添加

runat="server" 

属性的HTML标签?