0

ページ上にハイパーリンクのリストを生成するユーザーコントロールを作成しました。問題は、それが機能したくないように見えることです。これは、ユーザーコントロールの私のコードです。

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="DepartmentsList.ascx.cs"
Inherits="BaloonShop.UserControls.DepartmentsList" %>
<asp:DataList ID="list" runat="server" CssClass="departmentslist" Width="200px">
<HeaderStyle CssClass="departmentslisthead" />
<HeaderTemplate>
    Choose a Department
</HeaderTemplate>
<ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Classes.Link.ToDepartment(Eval("DepartmentID").ToString())%>'
    Text='<%# HttpUtility.HtmlEncode(Eval("Name").ToString()) %>'
    ToolTip='<%# HttpUtility.HtmlEncode(Eval("Description").ToString()) %>'
    CssClass='<%# Eval("DepartmentID").ToString() == Request.Querystring["DepartmentID"] ? "departmentselected" : "departmentunselected" %>'>
    </asp:HyperLink>
</ItemTemplate>

私のファイルの構造は次のとおりです。

ファイル構造

Classesフォルダが見つからないと言っているのはなぜですか?

さらに詳しい情報が必要な場合は、お問い合わせください。

編集

リンククラスのコード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BaloonShop.Classes
{
/// <summary>
/// Link factory class
/// </summary>
public class Link
{
    // Builds an absolute URL
    private static string BuildAbsolute(string relativeUri)
    {
        // get current uri
        Uri uri = HttpContext.Current.Request.Url;
        // build absolute path
        string app = HttpContext.Current.Request.ApplicationPath;
        if (!app.EndsWith("/")) app += "/";
        relativeUri = relativeUri.TrimStart('/');
        // return the absolute path
        return HttpUtility.UrlPathEncode(String.Format("http://{0}:{1}{2}{3}", uri.Host, uri.Port, app, relativeUri));
    }

    // Generate a department URL
    public static string ToDepartment(string departmentId, string page)
    {
        if (page == "1")
            return BuildAbsolute(String.Format("Catalog.aspx?DepartmentID={0}", departmentId));
        else
            return BuildAbsolute(String.Format("Catalog.aspx?DepartmentId={0}&Page={1}", departmentId, page));
    }

    // Generate a department URL for the first page
    public static string ToDepartment(string departmentId)
    {
        return ToDepartment(departmentId, "1");
    }
}

}

4

3 に答える 3

0

あなたのコードはただ参照していClassesます。すでにインポートしている場合を除きBaloonShop、これはを参照するだけglobal::Classesですが、名前空間はglobal::BaloonShop.Classesです。

だから:BaloonShop.Classesの代わりに使用するClasses

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# BaloonShop.Classes.Link.ToDepartment(Eval("DepartmentID").ToString())%>'
于 2012-09-24T10:07:54.243 に答える
0

(Visual Studioで)プロジェクトを右クリックし、[ASP.NETフォルダーの追加]を選択してから、[ App_Code ]を選択します。次に、クラスフォルダをApp_Codeにドラッグします。その後、問題が解決する可能性があります

于 2012-09-24T10:12:54.353 に答える
0

public link link= new link();「DepartmentsList.ascx.cs」で問題が解決します。これを使用してください。 NavigateUrl='<%# Link.ToDepartment(Eval("DepartmentID").ToString())%>'

于 2012-09-24T10:29:38.197 に答える