webForumDet fria alternativet

Fel med placeholder och usercontrol

.NET

9 svar · 364 visningar · startad av MagnusJ

Medlem sedan apr. 2004150 inlägg
Frågan#1

Jag har gått över från vb.net till C# och nu har jag försökt konventera en gammal metod som jag har använt mig av för navigeringen av sidor. Jag använder mig av en usercontrol som med hjälp av querystringen p kollar om sidan finns. Annars visas startsidan.

using System;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;

class MinCodeBehind : Page
{
	protected PlaceHolder myPlaceHolder;
	protected Control myControl;

	static void Page_Load(object sender, EventArgs e)
	{
		if (File.Exists(Page.MapPath("uc/" & System.Web.HttpContext.Current.Request.QueryString("p") & ".ascx")))
		{
			myControl = LoadControl("uc/" & System.Web.HttpContext.Current.Request.QueryString("p") & ".ascx");
			myPlaceHolder.Controls.Add(myControl);
		}
		else
		{
			myControl = LoadControl("uc/start.ascx");
			myPlaceHolder.Controls.Add(myControl);
		}			
	}
}

Jag får ett felmeddelande som ser ut så här:

Compiler Error Message: CS0118: 'System.Web.HttpRequest.QueryString' denotes a 'property' where a 'method' was expected

Source Error:

Line 13: static void Page_Load(object sender, EventArgs e)
Line 14: {
Line 15: if (File.Exists(Page.MapPath("uc/" & System.Web.HttpContext.Current.Request.QueryString("p") & ".ascx")))
Line 16: {
Line 17: myControl = LoadControl("uc/" & System.Web.HttpContext.Current.Request.QueryString("p") & ".ascx");

Någon som vet hur man kan åtgärda detta?

Medlem sedan sep. 20011 914 inlägg
#2

Buu: QueryString("p")
Jippi: QueryString["p"]

Medlem sedan apr. 2004150 inlägg
#3

Tack.

Operator '&' cannot be applied to operands of type 'string' and 'string'

Skriver man ut & på något annat sätt i C#?

Medlem sedan dec. 19996 522 inlägg
#4

använd +

Medlem sedan sep. 20011 914 inlägg
#5

+

Medlem sedan dec. 19996 522 inlägg
#6

wee jag var snabbast ;)

Medlem sedan apr. 2004150 inlägg
#7

tack igen! Blir mycket nytt :)

CS0120: An object reference is required for the nonstatic field, method, or property 'System.Web.UI.Page.MapPath(string)'

Det verkar ju som att den inte märker av det. Har jag byggt upp placeholdern och usercontrolen rätt?

Medlem sedan maj 2003151 inlägg
#8

Använd: Server.MapPath
typ:

if (System.IO.File.Exists(Server.MapPath("uc/" + System.Web.HttpContext.Current.Request.QueryString["p"] + ".asxc")))
Medlem sedan sep. 20011 914 inlägg
#9

Re: Fel med placeholder och usercontrol

using System;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;

class MinCodeBehind : Page
{
   protected PlaceHolder myPlaceHolder;

   private void Page_Load(object sender, EventArgs e)
   {
      string url = string.Format("uc/{0}.ascx",  Request.QueryString["p"]);
      if(File.Exists(Page.MapPath(url)))
      {
         myPlaceHolder.Controls.Add(LoadControl(url));
      }
      else
      {
          myPlaceHolder.Controls.Add(LoadControl("uc/start.ascx"));
      }			
   }
}
Medlem sedan apr. 2004150 inlägg
#10

Tack.

Jag får inget felmeddelande nu. Men placeholdern visar ingenting.

<%@ Page Language="c#" Src="default.cs" classname="MinCodeBehind" %>

<asp:placeholder id="myPlaceHolder" runat="server" />

så där har jag gjort i default.aspx.

Någon vänlig själ som vet hur man kan göra?

Edit: Lyckades lösa det nu.

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)