【问题标题】:ASP.NET 4 ACCESS DATA TO APPLY TO NavigateUrlASP.NET 4 访问数据以应用到 NavigateUrl
【发布时间】:2011-05-19 21:28:54
【问题描述】:

我目前正在学习 .net,但在尝试实现 url 路由时遇到了困难。

我的大部分工作正常,但我正在尝试从我的数据库中的信息生成超链接。

我可以很好地使用以下方法获取数据:

    'portfolio navigation data
    Dim rdrPortfolioNav As SqlDataReader

    Dim cmdPortfolioNav As SqlCommand = New SqlCommand()
    cmdPortfolioNav.CommandText = "SELECT TOP 6 [id], [date], [client], [category], [title], [body], [website], [navimage], [navdesc] FROM [portfolio] ORDER BY [date] DESC"
    cmdPortfolioNav.CommandType = CommandType.Text
    cmdPortfolioNav.Connection = boomSQL

    cmdPortfolioNav.Connection.Open()
    rdrPortfolioNav = cmdPortfolioNav.ExecuteReader(CommandBehavior.CloseConnection)

    lvPortfolioNav.DataSource = rdrPortfolioNav
    lvPortfolioNav.DataBind()

    cmdPortfolioNav.Dispose()

在前端,我可以使用以下方式访问数据并显示所有记录:

<asp:ListView ID="lvPortfolioNav" runat="server">
<ItemTemplate>
    <div class="work">
        <asp:HyperLink runat="server" NavigateUrl="portfolio/<%# DataBinder.Eval(Container.DataItem, &quot;id&quot;)%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;category&quot;)) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;title&quot;)) %>" ToolTip=""><span class="title"><%# DataBinder.Eval(Container.DataItem, "title")%></span></asp:HyperLink>
        <asp:Image runat="server" ImageUrl="<%# DataBinder.Eval(Container.DataItem, &quot;navimage&quot;)%>" AlternateText="<%# DataBinder.Eval(Container.DataItem, &quot;client&quot;)%>" ToolTip="<%# DataBinder.Eval(Container.DataItem, &quot;client&quot;)%>" />
        <span class="desc"><%# DataBinder.Eval(Container.DataItem, "navdesc")%></span> </div>
</ItemTemplate>

问题出在这一行:

<asp:HyperLink runat="server" NavigateUrl="portfolio/<%# DataBinder.Eval(Container.DataItem, &quot;id&quot;)%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;category&quot;)) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;title&quot;)) %>" ToolTip=""><span class="title"><%# DataBinder.Eval(Container.DataItem, "title")%></span></asp:HyperLink>

它不会从数据库中获取值,并且在 html 中,链接字面意思是:

<a href="../../portfolio/%3C%25#%20DataBinder.Eval(Container.DataItem,%20%22id%22)%25%3E/%3C%25%23%20FormatLinks(DataBinder.Eval(Container.DataItem,%20%22category%22))%20%25%3E/%3C%25%23%20FormatLinks(DataBinder.Eval(Container.DataItem,%20%22title%22))%20%25%3E"><span class="title">Kingston Bagpuize House Website</span></a>

同样的事情适用于 ImageUrl,所以不确定我做错了什么。

我知道您可以在后端代码中执行某些操作来生成网址,但我一生都无法在互联网上找到任何东西.....非常感谢您的帮助。

谢谢。

J.

【问题讨论】:

    标签: asp.net vb.net asp.net-4.0 vb.net-2010


    【解决方案1】:

    您不应该在 NavigateURL 中使用 # 并写

    按照以下示例进行操作

    http://www.extremeexperts.com/Net/FAQ/PassingMulitpleParameterinURLLink.aspx

    【讨论】:

    • 我按照建议尝试并更改为: " ToolTip=""> 但我仍然收到错误消息:服务器标签格式不正确。在同一行。
    • 您能否根据链接在 NavigateURL 中将其替换为单引号而不是双引号。
    【解决方案2】:

    与其把所有的工作都放在前端,不如把URL构建放在代码后面呢?

    在前端:

    NavigateUrl='

    在代码隐藏中:

    公共字符串 BuildURL(字符串 a, 字符串 b, 字符串 c){ /* 使用字符串生成器连接字符串并返回 */}

    您仍然必须绑定控件 每次绑定链接时,都会使用适当的值调用该方法,并将完整的字符串返回到 NavigateURL。

    【讨论】:

    • 嗨,我想这是我最初想做的事情,但不知道怎么做,等我回来试试你的建议,看看我能不能解决一下,谢谢。
    【解决方案3】:

    我是这样做的

    NavigateUrl= ''

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多