我想创建从我的 MS SQL 服务器加载的 ASP.NET 4.0 动态页面。基本上,它是一个包含信息的位置列表。例如:
Location1 would have the page www.site.com/location/location1.aspx
Location44 would have the page www.site.com/location/location44.aspx
我什至不知道从哪里开始,也许 URL 重写?
最佳答案
URL 重写解决的问题与您所描述的不同。
您可以使用 HttpHandler 来处理对路径 location
的请求并解析最后一段以获取您的查找键,然后只需将执行传递给 .aspx。尽管您将执行传递给一般页面,但 URL 将保持输入的状态。
我举个例子。试一试。 here is a sample project
LocationHandler.cs
using System.IO;
using System.Web;
namespace DBHandler
{
public class LocationHandler : IHttpHandler
{
#region IHttpHandler Members
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
string page = Path.GetFileNameWithoutExtension(request.Url.Segments[request.Url.Segments.Length - 1]);
// for url ~/location/location33.aspx page will be 'location33'
// do something interesting with page, perhaps
context.Server.Execute("~/locations.aspx?locationId=" + context.Server.UrlEncode(page));
}
public bool IsReusable
{
get { return false; }
}
#endregion
}
}
locations.aspx
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Request["locationId"];
}
</script>
<!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:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
web.config 摘录
...
<system.web>
...
<httpHandlers>
<add verb="*" path="location/*.*" type="DBHandler.LocationHandler"/>
</httpHandlers>
</system.web>
...
关于ASP.NET 4.0 数据库创建的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837641/