2013-09-11 3 views
0

У меня есть datalist и есть гиперссылка в том, что в navigateurl я хочу использовать QueryString. Это DataSource из осины: DataList:использовать параметр для querystring с Eval

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(); 

    } 

И это мой DataList:

<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}") %>'> 

но это не дает желаемого результата.

ответ

1

использование <%= вместо <%#

как-

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

когда я нажимаю на этой гиперссылке новая страница показать мне Ошибка HTTP 400 - Bad Request. и в строке URL отображается «http: // localhost: 55659/Профиль /% 3C% =% 20Eval% 28% 22GalleryID% 22,% 22UserID% 22,% 22 ~/Профиль/UserImages.aspx? ImgID = {0} & ProfileID = {1}% 22% 29% 20 %% 3E " – user2399248

0

Вы можете сделать таким образом

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

, когда я нажимаю на эту гиперссылку, новая страница показывает мне ошибку HTTP 400 - плохой запрос. – user2399248

1

Eval имеет следующий синтаксис:

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

[Вы можете пропустить контейнер, кстати,] Использование:

NavigateUrl='<%#CombinePath(
DataBinder.Eval(Container.DataItem,"GalleryID","~/Profile/UserImages.aspx?ImgID={0}").ToString(), 
DataBinder.Eval(Container.DataItem,"UserID","&ProfileID={0}").ToString()) %>' 
Смежные вопросы