ASP.NET 4.0 Database Created Pages
-
26-09-2019 - |
Question
Je souhaite créer des pages dynamiques ASP.NET 4.0 chargées à partir de mon serveur MS SQL. Fondamentalement, il s'agit d'une liste d'emplacements avec des informations. Par exemple:
Location1 would have the page www.site.com/location/location1.aspx
Location44 would have the page www.site.com/location/location44.aspx
Je ne sais même pas par où commencer par cela, une réécriture d'URL peut-être?
La solution
La réécriture d'URL aborde un problème différent de ce que vous décrivez.
Vous pouvez utiliser un httphandler qui gère les demandes sur le chemin location
et analyser le dernier segment pour obtenir votre clé de recherche, puis passer l'exécution à un .aspx. Bien que vous passiez l'exécution à une page générale, l'URL restera comme entré.
Je fournirai un exemple. Donner un coup de feu. Voici un exemple de projet
Emplacement-handler.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 extrait
...
<system.web>
...
<httpHandlers>
<add verb="*" path="location/*.*" type="DBHandler.LocationHandler"/>
</httpHandlers>
</system.web>
...