2010-07-01 124 views
0

我使用它來創建一個新的文件夾asp.net的MVC文件路徑問題

System.IO.Directory.CreateDirectory(@" + somevariable); 

的事情是,當我進入文件夾c:\ newfolder \ newfolder在文本框中,並試圖收到在控制器中的值被雙斜線(\)c:\\newfolder\\newfolder替換。如何將我阻止\報價從路徑

未來其次,與string.replace也沒有與\\

string strText = OrganMeta.vcr_MetaValue; 
    string gf = strText.Replace("\\", @"\"); 

回答

2

「\\」相當於一個字符的字符串,反斜槓。 @「\」也相當於單個字符,反斜槓。

所以你的替換方法是用一種不同的形式替換一種形式的反斜槓。

試試這個:

string gf = strText.Replace(@"\\", @"\"); 

OR

string gf = strText.Replace("\\\\", "\\"); 

儘可能的文件夾的事情會發生,安迪是正確的,它會顯示在IDE雙反斜線的時候,其實只是有一個在字符串中。當Directory.CreateDirectory()被調用時是否有錯誤?或者是創建的文件夾?

1

替換\工作確定它與\\代替它?如果將鼠標懸停在變量上,它將顯示\\應該有一個\\,但如果您在文本可視化工具中查看它,它將顯示正確。

不確定你的意思是什麼string.replace不工作......?你能舉一個沒有用的代碼的例子嗎?

+0

的事情是,如果我硬線C:\ newfolder \ newfolder它的工作原理,但如果我不那麼它不工作,它顯示\\字符串中 – maztt 2010-07-01 17:33:23

+0

我創建了一個測試MVC2使用單個文本框和接收FormCollection的控制器進行項目。如果我然後將提交的文本的值放入ViewData中,並在View中顯示它是正確的,那麼我還包括字符串中'\'字符數的計數,它是正確的。你可以在一個新的MVC項目中嘗試同樣的事情,看看它是否有效? 您的替換是正確的,它會查找\\並用\替換。 – 2010-07-01 18:21:10

+0

Doh!乾杯戴夫,錯過了它沒有@之前\\。 – 2010-07-01 18:48:37

0

斜線在表單提交和控制器操作之間不會加倍。

在調試器或另一個顯示兩個斜線的上下文中,您可能更容易看到結果,以便區分轉義字符(\ n)和文字斜線()。

將該字符串寫入調試窗口來驗證。

System.Diagnostics.Debug.WriteLine("SomeText");