0

I am new to C# and working on a project with sitecore

i just added a aspx page with the

.aspx file:

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

 Control templateControl = LoadControl("templateLandingPages/free_template.ascx");
 Control placeHolderControl = Page.FindControl("templatePage");

Error in browser shows for line no 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");
4

5 回答 5

8

简单的问题,你如何使用你的\. \\您需要在斜线 ( )上加倍。第一个充当第二个的转义字符。

Control templateControl = LoadControl("templateLandingPages\\free_template.ascx");

如评论所述,您还可以使用:

Control templateControl = LoadControl(@"templateLandingPages\free_template.ascx");

查看这篇关于字符串文字的文章以及为什么要使用一种表示法而不是另一种表示法。

于 2012-09-20T17:37:19.847 回答
2

放在@路径字符串的开头,例如@"templateLandingPages\free_template.ascx"

代码:

Control templateControl = LoadControl(@"templateLandingPages/free_template.ascx");

前缀“@”允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符 @ 实际上不是标识符的一部分,因此标识符在其他语言中可能被视为普通标识符,没有前缀。带有@ 前缀的标识符称为逐字标识符。

于 2012-09-20T17:42:00.447 回答
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";
于 2012-09-20T17:43:35.740 回答
0

在 C# 中使用路径时,您需要使用\\而不是\. 它转义了反斜杠,因此它只是一个文字\

于 2012-09-20T17:38:57.960 回答
0

我可以解决“路径中的非法字符”问题的一种方法是在“ Initialize() ”函数调用中注释所有成员变量实例化,然后一一取消注释以找出问题所在。希望这可以帮助

于 2015-07-31T04:27:32.833 回答