Frage

Ich möchte ASP.NET 4.0 -Dynamik -Seiten erstellen, die von meinem MS SQL -Server geladen wurden. Grundsätzlich handelt es sich um eine Liste von Standorten mit Informationen. Zum Beispiel:

Location1 would have the page www.site.com/location/location1.aspx
Location44 would have the page www.site.com/location/location44.aspx

Ich weiß nicht einmal, wo ich damit anfangen soll.

War es hilfreich?

Lösung

Das Umschreiben von URL befasst sich mit einem anderen Problem als das, was Sie beschreiben.

Sie können einen httphandler verwenden, der Anfragen zum Pfad abwickelt location und analysieren Sie das letzte Segment, um Ihren Lookup -Schlüssel zu erhalten, und geben Sie einfach die Ausführung an ein .aspx. Obwohl Sie die Ausführung auf eine allgemeine Seite weitergeben, bleibt die URL wie eingegeben.

Ich werde ein Beispiel geben. Versuch es einmal. Hier ist ein Beispielprojekt

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
    }
}

Standorte.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 Auszug

...
<system.web>
  ...
  <httpHandlers>
    <add verb="*" path="location/*.*" type="DBHandler.LocationHandler"/>
  </httpHandlers>
</system.web>
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top