我尝试通过在需要的位置注入userID
和portalID
来构建目录路径。
string userID = HttpContext.Current.Request.Params["userID"];
string portalID = HttpContext.Current.Request.Params["portalID"];
// This is the acutal path ---> string folderName = @"C:\DotNetNuke 8.0\Portals\0\Users\017\17\17";
string folderName = "c:\\DotNetNuke 8.0\\Portals\\" + portalID + "\\Users\\0" + userID + "\\" + userID + "\\" + userID;
HttpContext.Current.Response.Write(folderName);
// This is what's returned ---> c:\DotNetNuke 8.0\Portals\\Users\0\\
答案 0 :(得分:4)
最好的方法是使用Path.Combine
方法,如下所示:
string userID = "testuser";
string portalID = "portal";
var path = Path.Combine(@"c:\DotNetNuke 8.0\Portals", portalID, "Users", "0" + userID, userID, userID);
Console.WriteLine(path);
结果将是
c:\DotNetNuke 8.0\Portals\portal\Users\0testuser\testuser\testuser
要详细了解Path.Combine
支票MSDN documentation。
答案 1 :(得分:2)
你拥有的实际上是正确的。看起来portalID
和userId
是null
或空字符串""
。但是,有更简单的方法可以逃脱 - 如果你使用@"some \ string"
,那么你唯一需要逃脱的就是"
到""
。
示例:
string userID = "17";
string portalID = "0";
string folderName = "c:\\DotNetNuke 8.0\\Portals\\" + portalID + "\\Users\\0" + userID + "\\" + userID + "\\" + userID;
给出
c:\DotNetNuke 8.0\Portals\0\Users\017\17\17
同样如下:
string folderName = @"c:\DotNetNuke 8.0\Portals\" + portalID + @"\Users\0" + userID + @"\" + userID + @"\" + userID;
同样如下:
string folderName = $@"c:\DotNetNuke 8.0\Portals\{portalID}\Users\0{userID}\{userID}\{userID}";