2015-04-28 113 views
0

我有進來的表示域的用戶名,從剃刀視圖的方法,經由JS稱爲字符串:未能更換反斜槓

<script type="text/javascript"> 
     function editResource() { 
... 
      var user = '@Context.User.Identity.Name'; 
      $.post(url, ... skipped 
      }); 
     } 
    </script> 

控制器:

public string SaveDeprecatedResource(string resource, string newResource, string description, string user, string ticket) 
    { 
     user = user.Replace("\\", "\\\\"); // how do I replace with double backslash? 

用戶自帶到控制器等於 「DOMAIN \ v-用戶」

用戶對象是字符串:

user.GetType() 
{Name = "String" FullName = "System.String"} 
    [System.RuntimeType]: {Name = "String" FullName = "System.String"} 

我需要插入它插入到數據庫(LINQ),但它吃反斜槓。基本上我需要用\\替換\,我沒有這麼做。我究竟做錯了什麼?

user.Contains(@"\") 
false 
user.Contains(@"\\") 
false 
user.Contains("\\") 
false 
user.Contains('\\') 
false 

EDIT,所以反斜槓不是反斜槓,但即\v被視爲垂直製表符。無論如何,反斜槓後可以是任何字母的字母。我如何普遍處理它?

+0

_「進入方法」_ - 它來自哪裏,它看起來像什麼? – CodeCaster

+0

您是否在某處設置了DOMAIN \用戶,或者是從文本框還是其他一些UI控件中讀取?如果你在代碼中設置它,你需要在前面加上@,比如user = @「DOMAIN \ user」; –

回答

2

當您將數據保存到數據庫時,您需要轉義反斜槓。

user = @"DOMAIN\user"