【问题标题】:use to parameter for querystring with Eval使用 Eval 为查询字符串提供参数
【发布时间】:2013-09-15 04:54:14
【问题描述】:

我有一个数据列表,其中有一个超链接,在 navigateurl 中我想使用 QueryString。 这是一个asp的DataSource:DataList:

 public void GalleryListDS()
    {

        int UserID = Convert.ToInt32(ViewState["UserID"]);

        var n = from gi in DataContext.Context.GalleryImages
                join g in DataContext.Context.Galleries
                on gi.GalleryID equals g.GalleryID
                where g.UserID == UserID && gi.IsAlbumImage == true
                select new
                {
                    UserID=g.UserID,
                    GalleryID = g.GalleryID,
                    ImageDescription = gi.ImageDescription,
                    GalleryName=g.GalleryName,
                    ImageFileName = gi.ImageFileName
                };

        dlGalleryList.DataSource = n;
        dlGalleryList.DataBind();

    }

这是我的数据列表:

 <asp:DataList ID="dlGalleryList" runat="server" RepeatColumns="3">
        <ItemTemplate>
            <div class="gallery">
              <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("GalleryID","~/Profile/UserImages.aspx?ImgID={0}") %>'>
                '<%# Eval("GalleryName")%>'
            </asp:HyperLink>
            </div>
        </ItemTemplate>
    </asp:DataList>

我希望我的 QueryString 有一个像这样的参数:

  <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("GalleryID","UserID","~/Profile/UserImages.aspx?ImgID={0}&ProfileID={1}") %>'>

但这并没有达到预期的效果。

【问题讨论】:

    标签: c# asp.net hyperlink query-string


    【解决方案1】:

    使用&lt;%= 而不是&lt;%#

    喜欢-

    NavigateUrl='<%= Eval("GalleryID","UserID","~/Profile/UserImages.aspx?ImgID={0}&ProfileID={1}") %>'
    

    【讨论】:

    • 当我单击此超链接时,新页面会显示 HTTP 错误 400 - 错误请求。并且网址栏显示“localhost:55659/Profile/…{0}&ProfileID={1}%22%29%20%%3E”
    【解决方案2】:

    Eval 的语法如下:

    public static string Eval(
        Object container,
        string expression,
        string format
    )
    

    [顺便可以跳过Container,] 使用:

    NavigateUrl='<%#CombinePath(
    DataBinder.Eval(Container.DataItem,"GalleryID","~/Profile/UserImages.aspx?ImgID={0}").ToString(),
    DataBinder.Eval(Container.DataItem,"UserID","&ProfileID={0}").ToString()) %>'
    

    【讨论】:

      【解决方案3】:

      你可以这样做

      <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%= "~/Profile/UserImages.aspx?ImgID=" + Eval("GalleryID") + "&ProfileID=" + Eval("UserID") %>'>
      

      【讨论】:

      • 当我点击此超链接时,新页面显示 HTTP 错误 400 - 错误请求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 2013-04-10
      • 2016-07-07
      • 1970-01-01
      • 2015-02-13
      • 2018-12-30
      相关资源
      最近更新 更多