using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1.App_Code
{
/// <summary>
/// 连接工厂类
/// </summary>
public class Link
{
//构建绝对URL
private static string BuildAbsolute(string relativeUri)
{
//获取当前URL
Uri uri = HttpContext.Current.Request.Url;
//构建绝对路径
string app = HttpContext.Current.Request.ApplicationPath;
if (!app.EndsWith("/"))
{
app += "/";
}
relativeUri = relativeUri.TrimStart('/');
//返回绝对路径
return HttpUtility.UrlPathEncode(string.Format("http://{0}:{1}{2}{3}",uri.Host,uri.Port,app,relativeUri));
}
//生成一个门类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));
}
}
//为首页生成一个门类URL
public static string ToDepartment(string departmentId)
{
return ToDepartment(departmentId,"1");
}
}
}
aspx页代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="List" runat="server" CssClass="DepartmentList" Width="200px">
<HeaderStyle CssClass="DepartmentListHead" />
<HeaderTemplate>
选择一个
</HeaderTemplate>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# 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>
</asp:DataList>
</div>
</form>
</body>
</html>
26 个解决方案
#1
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# 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>
------------------------------------
这块可以调用 本页面的.cs 方法,在.cs方法内再去调用Link里面的方法
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# 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>
------------------------------------
这块可以调用 本页面的.cs 方法,在.cs方法内再去调用Link里面的方法
#2
是不是少了这个
using WebApplication1.App_Code;
using WebApplication1.App_Code;
#3
不能直接在aspx页面里调用吗?
#4
在aspx页面哪有using啊!在.cs页里面using WebApplication1.App_Code也没用
#5
<%@ Import Namespace="WebApplication1.App_Code" %>
#6
导入命名空间
比如:
比如:
<%@Import Namespace="System.Data"%>
#7
提示:编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0433: 类型“WebApplication1.App_Code.Link”同时存在于“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\f6649fe3\d67dc036\assembly\dl3\a70e0df6\c685d757_485ecd01\WebApplication1.DLL”和“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\f6649fe3\d67dc036\App_Code.fofuy6ea.dll”中
#8
但是咋们一般不这么写吧 难道不能直接在后台里面直接处理掉?
#9
重新编译一次 或者把命名空间改个名字
#10
命名空间改成WebApplication2.App_Code也是一样的
#11
这个。。可以但比较麻烦一点
#12
我说不用App_Code 改成App_Code2试试
#13
看看你新建的那个类文件的属性,生成操作是不是编译,默认放在App_Code里的代码是不编译的。
#14
先看看你的App_Code里的类的命名空间,然后在aspx页面后台引用一下试试吧!
#15
发现不用app_code文件夹就可以,这怎么回事?!
#16
没遇过你这种情况 app_code会被编译成一个app_code.dll的
#17
是编译的
#18
那绝对是你看错了,默认生成操作是内容。
这就是为什么放App_Code里引用不到的原因,改成编译就可以。
#19
可以尝试查看app_code文件夹的支持项目类型列表,就我所知WEb应用程序不支持(很多限制)。一般在项目上无法从ASPNET文件夹中找到该项,就不要瞎折腾自己去加了。
类库你随便放个地方都可以,反正根据命名空间引用...
类库你随便放个地方都可以,反正根据命名空间引用...
#20
默认生成操作是内容,但我已经改过了
#21
哦,那会不会有安全方面的问题存在?
#22
问题解决了,谢谢大家的热情帮忙。
#23
#24
藐视是 解决方案有问题啊! 是不是不是web 的解决方案啊! 新建一个web网站的试试看!
#25
是怎么解决的 我也遇到这样的问题了 查了很久不知道怎么回事
#26
类不要放在app_code文件夹就好了
#1
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# 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>
------------------------------------
这块可以调用 本页面的.cs 方法,在.cs方法内再去调用Link里面的方法
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# 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>
------------------------------------
这块可以调用 本页面的.cs 方法,在.cs方法内再去调用Link里面的方法
#2
是不是少了这个
using WebApplication1.App_Code;
using WebApplication1.App_Code;
#3
不能直接在aspx页面里调用吗?
#4
在aspx页面哪有using啊!在.cs页里面using WebApplication1.App_Code也没用
#5
<%@ Import Namespace="WebApplication1.App_Code" %>
#6
导入命名空间
比如:
比如:
<%@Import Namespace="System.Data"%>
#7
提示:编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0433: 类型“WebApplication1.App_Code.Link”同时存在于“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\f6649fe3\d67dc036\assembly\dl3\a70e0df6\c685d757_485ecd01\WebApplication1.DLL”和“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\f6649fe3\d67dc036\App_Code.fofuy6ea.dll”中
#8
但是咋们一般不这么写吧 难道不能直接在后台里面直接处理掉?
#9
重新编译一次 或者把命名空间改个名字
#10
命名空间改成WebApplication2.App_Code也是一样的
#11
这个。。可以但比较麻烦一点
#12
我说不用App_Code 改成App_Code2试试
#13
看看你新建的那个类文件的属性,生成操作是不是编译,默认放在App_Code里的代码是不编译的。
#14
先看看你的App_Code里的类的命名空间,然后在aspx页面后台引用一下试试吧!
#15
发现不用app_code文件夹就可以,这怎么回事?!
#16
没遇过你这种情况 app_code会被编译成一个app_code.dll的
#17
是编译的
#18
那绝对是你看错了,默认生成操作是内容。
这就是为什么放App_Code里引用不到的原因,改成编译就可以。
#19
可以尝试查看app_code文件夹的支持项目类型列表,就我所知WEb应用程序不支持(很多限制)。一般在项目上无法从ASPNET文件夹中找到该项,就不要瞎折腾自己去加了。
类库你随便放个地方都可以,反正根据命名空间引用...
类库你随便放个地方都可以,反正根据命名空间引用...
#20
默认生成操作是内容,但我已经改过了
#21
哦,那会不会有安全方面的问题存在?
#22
问题解决了,谢谢大家的热情帮忙。
#23
#24
藐视是 解决方案有问题啊! 是不是不是web 的解决方案啊! 新建一个web网站的试试看!
#25
是怎么解决的 我也遇到这样的问题了 查了很久不知道怎么回事
#26
类不要放在app_code文件夹就好了