在我的ASPX页面中,我有这个:
<h3>
<asp:HyperLink runat="server"
NavigateUrl="<%$ Resources:Path, Article%>"
Text='<%# Eval("title") %>' />
</h3>
对于NavigateUrl
属性,我想指定一个类似
NavigateUrl="<%$ Resources:Path, Article%>?id=4"
但是当我这样做时,表达式不会被ASP解析器占用。
我该怎么做?
答案 0 :(得分:2)
请勿在标记中执行此操作。你有一个服务器控件 - 给它一个ID(比如ID="NavigationLink"
,然后在你的.cs文件中做这样的事情:
void Page_Load(object sender, EventArgs e)
{
// I'm guessing that "4" was just an example here, so fill that piece in with a function you can call to create the proper ID.
NavigationLink.NavigateUrl = Properties.Resources.Path + Properties.Resources.Article + "?id=4"
}
修改:当您说<%$ Resources:Path, Article%>
您尝试引用资源文件中的Path
和Article
条目时,我假设但经过进一步的反思,很难准确地说出你在做什么。你能在这里更具体一点吗?
答案 1 :(得分:1)
您可以在类后面的代码中定义受保护的函数,并从标记中调用它。像这样:
<h3>
<asp:HyperLink runat="server"
NavigateUrl="<%# GetNavigateUrl(Eval("ID")) %>" <%-- Passing an ID as a parameter for example --%>
Text='<%# Eval("title") %>' />
</h3>
代码背后:
// Again, idObj is just an example. Any info from the data item can be passed here
protected string GetNavigateUrl(object idObj)
{
int id = (int)idObj;
string urlFromResources = // retrieving the url from resources
return urlFromResources + '?ID=' + id;
}
答案 2 :(得分:0)
您可以在代码隐藏中使用retrieve the resource values programmatically,并从那里设置NavigateUrl属性。
答案 3 :(得分:0)
尝试String.Format ...
<% =String.Format({0}?id={1}, Request.ApplicationPath, 4) %>
看起来你正在混合使用其他语言(javascript?)。
另外,不要忘记为服务器端控件提供ID。