2015-04-28 109 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"