在表达式<%$ ...%>之后添加文本

时间:2011-11-01 21:01:50

标签: asp.net

在我的ASPX页面中,我有这个:

<h3>
    <asp:HyperLink runat="server"
        NavigateUrl="<%$ Resources:Path, Article%>"
        Text='<%# Eval("title") %>' />
</h3>

对于NavigateUrl属性,我想指定一个类似

的ID
NavigateUrl="<%$ Resources:Path, Article%>?id=4"

但是当我这样做时,表达式不会被ASP解析器占用。

我该怎么做?

4 个答案:

答案 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%>您尝试引用资源文件中的PathArticle条目时,我假设但经过进一步的反思,很难准确地说出你在做什么。你能在这里更具体一点吗?

答案 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。