2013-07-02 5 views
-1

Le Href normal ci-dessous fonctionne correctement et rend la page appelée correctement, mais l'URL n'est pas masquée.URL Le routage ne rend pas correctement la page appelée

<asp:Repeater ID="rCompany" runat="server" DataSourceID="sdsCompany" > 
<ItemTemplate> 
<div class="col4" id="trip_third"> 
<a href="discover_detail.aspx?Companies_PKID=<%# Eval("Companies_PKID").ToString() %>">  
    ....... 
</a> 
</div> 
</ItemTemplate> 
</Repeater> 

Après avoir ajouté Global.asax ci-dessous ...

protected void Application_Start(object sender, EventArgs e) 
{ 
//Code that runs on application startup 
RegisterRoutes(RouteTable.Routes); 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
routes.MapPageRoute(
"RouteForDiscover_Detail", 
"discover_detail/{Companies_PKID}", 
"~/discover_detail.aspx"); 
} 

et changer Href pour ...

<a href="<%#GetRouteUrl("RouteForDiscover_Detail", new {Companies_PKID=Eval("Companies_PKID").ToString()})%>" > 

L'URL est réécrite comme prévu, mais la page appelée est rendue " totalement incorrectement ».

Que manque-t-il ici ppl?

Merci pour votre attention à cette question à l'avance. Toute solution sera grandement appréciée.

(Grandement vers le bas appelé page mis à l'échelle, mais agit de même avec 2 ci-dessus différents appels) discover_detail.aspx (Ce n'est pas mon code HTML) Notez que également SelectCommand (s) sont codés en dur pour la simplicité pour vous assurer qu'ils ne sont pas la cause.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="discover_detail.aspx.cs" %> 
<%@ Import NameSpace="System.Web" %> 
<%@ Import NameSpace="System.Web.UI.WebControls" %> 
<%@ Import NameSpace="System.Web.UI.WebControls.WebParts" %> 
<%@ Import NameSpace="System.Web.UI.HtmlControls" %> 
<%@ Import NameSpace="System.Web.Security" %> 
<%@ Import NameSpace="System.Web.Routing" %> 
<!DOCTYPE HTML> 
<script runat="server"> 
new void Page_Load(object sender, EventArgs e) 
{ 
if (Request.QueryString["Companies_PKID"] == null) 
{ 
sdsCompany.SelectCommand = "SELECT * FROM [DiscoverShare].[dbo].[Companies] OUTER APPLY (SELECT TOP 1 * FROM [DiscoverShare].[dbo].[Image] WHERE Image.Company_PKID = Companies.Companies_PKID) i1 WHERE Companies.Companies_PKID = 464"; 
sdsImage.SelectCommand = "SELECT * FROM [DiscoverShare].[dbo].[Image] WHERE Image.Company_PKID = 464"; 
} 
else 
{ 
sdsCompany.SelectCommand = "SELECT * FROM [DiscoverShare].[dbo].[Companies] OUTER APPLY (SELECT TOP 1 * FROM [DiscoverShare].[dbo].[Image] WHERE Image.Company_PKID = Companies.Companies_PKID) i1 WHERE Companies.Companies_PKID = 464"; 
sdsImage.SelectCommand = "SELECT * FROM [DiscoverShare].[dbo].[Image] WHERE Image.Company_PKID = 464"; 
} 
} 
</script> 
<html lang="en-us" class="no-js"> 
<head> 
<meta charset=utf-8> 
<title>DiscoverShare | Explore.Achieve.Connect</title> 
<link rel="shortcut icon" type="image/x-icon" href="../assets/images/favicon.ico" /> 
<link href="css/bootstrap.min.css" rel="stylesheet" /> 
<link href="css/master.css" rel="stylesheet" type="text/css" /> 
<script src="js/scrolltopcontrol.js" type="text/javascript"></script> 
<script src="js/modernizr.js" type="text/javascript"></script> 
<link rel="stylesheet" href="css/flexslider.css" type="text/css" /> 
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<link rel="stylesheet" href="css/ie.css"> 
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,maximum scale=1"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
<script src="js/jquery.flexslider-min.js" type="text/javascript"></script> 
</head> 
<body> 
<asp:SqlDataSource ID="sdsCompany" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DiscoverShareConnectionString2 %>" 
    SelectCommand="SELECT * FROM [DiscoverShare].[dbo].[Companies] 
         WHERE Companies_PKID = 517"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="Companies_PKID" 
       QueryStringField="Companies_PKID" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
<asp:SqlDataSource ID="sdsImage" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DiscoverShareConnectionString2 %>" 
     SelectCommand="SELECT * FROM [DiscoverShare].[dbo].[Image] WHERE Image.Company_PKID = 517"> 
    <SelectParameters> 
      <asp:QueryStringParameter Name="Companies_PKID" 
       QueryStringField="Companies_PKID" Type="Int32" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
</body> 
<form id="login" runat="server"> 
     <div class="navbar navbar-inverse navbar-fixed-top"> 
      <div class="navbar-inner"> 
       <div class="container"> 
        <a class="brand" href="default.aspx"><img src="assets/images/logo.png" height="40" width="200" /></a> 
        <div class="nav-collapse collapse pull-right"> 
         <ul class="nav"> 
          <li class="active"><a href="#">Home</a></li> 
          <li><a href="AddActivity.aspx">Add Activity</a></li> 
          <li><a href="ReviewActivity.aspx">Review Activity</a></li> 
          <li class="dropdown"> 
           <a href="#" class="dropdown-toggle" data-toggle="dropdown"><asp:LoginName ID="LoginName2" runat="server" Font-Italic="False" Font-Names="verdana" Font-Size="10pt" /> <b class="caret"></b></a> 
           <ul class="dropdown-menu"> 
            <li><a href="mytrips.aspx">Bucket List</a></li> 
            <li><a href="settings.aspx">Settings</a></li> 
            <li><a href="findfriends.aspx">Find Friends</a></li> 
            <li class="divider"></li> 
            <li class="nav-header">Login/Out</li> 
            <%--<li><a href="#">Separated link</a></li>--%> 
            <li id="login_button"><asp:LoginStatus ID="LoginStatus2" runat="server" Font-Bold="True" Font-Names="verdana" 
             Font-Size="8pt" ForeColor="White" 
             LoginImageUrl="~/assets/images/login.png" LogoutAction="RedirectToLoginPage" 
             LogoutImageUrl="~/assets/images/logout.png" LogoutPageUrl="~/login.aspx" /></li> 
           </ul> 
          </li> 
         </ul> 
        </div><!--/.nav-collapse --> 
       </div> 
      </div> 
     </div> 

    <div id="footer_wrap"> 
     <footer class="row"> 
      <div class="standard-footer"> 
       <p><span style="margin: 0 10px;">&copy;2012 DiscoverShare&trade;</span> | <a href="/about">Business</a> | <a href="/contact">Brand</a> | <a href="http://twitter.com/" target="_blank">About Us</a> | <a href="/terms">Privacy</a> | <a href="/privacy">Jobs</a> | <a href="/privacy">Terms</a> | <a href="/privacy">Help</a></p> 
      </div> 
     </footer> 
    </div> 
    <script src="js/gumby.min.js" type="text/javascript"></script> 
    <script src="js/jquery.mousewheel.min.js" type="text/javascript"></script> 
    <script src="js/jquery.easing.1.3.js" type="text/javascript"></script> 
    </form> 

+2

manuellement « La page est tout à fait correctement rendue » ... Pouvez-vous S'il vous plaît? Que vois-tu exactement? Qu'est-ce qui est totalement incorrect à ce sujet? – Ronnie

+0

L'en-tête/pied de page du HTML, les images ne s'affichent pas, JS ne fonctionne pas. Toute la page est FUBAR'd. Rien n'a été rendu correctement. Pourrais-je manquer quelque chose dans la page appelée? Devrait-il recevoir l'appel différemment de l'Href normal? –

+1

ne devrait pas la définition de l'itinéraire soit "discover_detail/{Companies_PKID}", (manquant un angle gauche)? – jbl

Répondre

0

Je pense que vous devez fournir un peu plus de code pour nous d'être en mesure d'aider complètement, mais j'ai un fort sentiment ceci est votre prob:

Dans votre premier exemple, vous utilisiez un querystring pour passer Companies_PKID, donc je suppose que vous codez derrière avait quelque chose comme:

if (!String.IsNullOrEmpty(Request.QueryString["Companies_PKID"])) 
{ 
    string blah = (Request.QueryString["Companies_PKID"]).ToString(); 
} 

maintenant, vous devez obtenir la valeur différente:

if (Page.RouteData.Values["Companies_PKID"] != null) 
{ 
    string blah = Page.RouteData.Values["Companies_PKID"].ToString(); 
} 

Notez que vous devez vérifier à la fois les données de la chaîne de requête et celles de la route.

L'autre chose que vous voulez faire est que les chemins vers vos feuilles de style, etc, sont corrects.

+0

Après avoir enlevé tout le code qui fait référence à tout et ne laissant que et

, il est toujours FUBAR'd. Qu'est-ce qui se passe ici? –

+0

@AlsProtocol Le simple fait de dire que FUBARd ne décrit pas le problème ou nous montre ce qui se passe. Comme beaucoup de personnes l'ont déjà dit, vous devez inclure un code pertinent. – MikeSmithDev

+0

Si vous regardez dans Fiddler, quelles sont les URLs recherchées par le navigateur pour les images, javascript, etc? – Amy

0

Toutes vos références relatives sont erronées maintenant puisque l'URL demandée est dans un sous-répertoire virtuel (discover_detail). Vous devez modifier toutes vos références aux images, feuilles de style, etc. pour utiliser une version relative à l'application à la place.

ne sont pas les seuls, mais cela devrait vous rapprocher:

<link runat="server" rel="shortcut icon" type="image/x-icon" href="~/assets/images/favicon.ico" /> 
<link runat="server" href="~/css/bootstrap.min.css" rel="stylesheet" /> 
<link runat="server" href="~/css/master.css" rel="stylesheet" type="text/css" /> 
<script src="<% Page.ResolveClientUrl("~/js/scrolltopcontrol.js") %>" type="text/javascript"></script> 
<script src="<% Page.ResolveClientUrl("~/js/modernizr.js") %>" type="text/javascript"></script> 
<link runat="server" rel="stylesheet" href="~/css/flexslider.css" type="text/css" /> 
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<link runat="server" rel="stylesheet" href="~/css/ie.css"> 
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,maximum-scale=1"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js"></script> 
<script src="<% Page.ResolveClientUrl("~/js/bootstrap.min.js") %>"></script> 
<script src="<% Page.ResolveClientUrl("~/js/jquery.flexslider-min.js") %>" type="text/javascript"></script> 

** editted à résoudre les URL app-

par rapport
+0

Ceci est en plus de changer toutes vos références à QueryString à RouteValues ​​car vous n'utilisez plus QueryString pour passer vos valeurs autour. QueryStringParameter devra devenir RouteValueParameter ou un équivalent (je ne pense pas que RouteValueParameter existe réellement). –

+0

En outre, déboguer avec leur firebug dans firefox, en regardant l'onglet net indiquerait que tous vos externes reçoivent 404 erreurs non trouvées, ou en utilisant fiddler2 comme un proxy indiquerait la même chose. Via Chrome, appuyez sur F12 puis sélectionnez l'onglet réseau, etc etc –

+0

J'ai besoin à la fois QueryString et RouteValues ​​pour 2 types d'utilisateurs différents d'où le 'if' Déclaration dans le code-behind –

Questions connexes