我是C#的新手,正在使用sitecore
开展项目我刚刚用
添加了一个aspx页面.aspx文件:
<sc:sublayout runat="server" renderingid="{7ACDFB04-E9C9-4AC4-BDC6-6F3FF0862199}" path="/layouts/FSB/Header.ascx" id="HeaderFixed"></sc:sublayout>
<sc:placeholder runat="server" key="layout" id="templatePage"></sc:placeholder>
<sc:sublayout runat="server" renderingid="{621A56F6-9948-4661-9F33-3AFEF1DE698D}" path="/layouts/FSB/Footer.ascx" id="FooterFixed"></sc:sublayout>
.cs文件
Control templateControl = LoadControl("templateLandingPages/free_template.ascx");
Control placeHolderControl = Page.FindControl("templatePage");
第16行的浏览器显示错误:
Illegal characters in path.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Illegal characters in path.
Source Error:
Line 14: protected void Page_Load(object sender, EventArgs e)
Line 15: {
Line 16: Control templateControl = LoadControl("templateLandingPages\free_template.ascx");
Line 17: Control placeHolderControl = Page.FindControl("templatePage");
答案 0 :(得分:8)
简单地说明了如何使用\
。你需要加倍斜杠(\\
)。第一个作为第二个的转义字符。
Control templateControl = LoadControl("templateLandingPages\\free_template.ascx");
如评论所述,您还可以使用:
Control templateControl = LoadControl(@"templateLandingPages\free_template.ascx");
查看关于字符串文字的this article以及为什么要使用一种符号而不是另一种符号。
答案 1 :(得分:2)
将@
放在路径字符串的开头,例如@"templateLandingPages\free_template.ascx"
<强> CODE:强>
Control templateControl = LoadControl(@"templateLandingPages/free_template.ascx");
前缀“@”允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀。带有@前缀的标识符称为逐字标识符。
答案 2 :(得分:2)
C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。
http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx
您需要使用转义或使用逐字字符串。
var escaped = "templateLandingPages\\free_template.ascx";
var verbatim = @"templateLandingPages\free_template.ascx";
答案 3 :(得分:0)
在C#中使用路径时,您需要使用\\
而不是\
。它逃脱反斜杠,因此它只是一个文字\
。
答案 4 :(得分:0)
我可以解决“路径中的非法字符”问题的一种方法是在“Initialize()”函数调用中注释所有成员变量实例,然后逐个取消注释每一个以查找问题所在确切地说。希望这有帮助