如何去除MVC CSHTML中JS代码块内<text>生成的多余空格?
解决MVC CSHTML中JavaScript字符串多余空格问题
我太懂这个小困扰了!在MVC项目的CSHTML文件里写JavaScript代码时,用Razor的if-else拼接字符串,else分支输出很干净,可if分支总是莫名带前后多余空格,确实烦人。
你的原始代码问题
你之前写的代码是这样的:
var url = '@if (@HttpContext.Current.Session["id"].ToString() == "1") { <text>Testing one two three</text> } else { @Url.Action("GetCustomer", "Customer") }';
执行else分支时能得到完美结果:var url = '/Customer/GetCustomer';,但if分支却会变成:var url = ' Testing one two three ';——这是因为Razor会把<text>标签周围的换行、空格都直接渲染进最终输出里。
完美解决方案(感谢Ciubotariu Florin)
换成Razor三元表达式写法,并用括号把整个表达式包裹起来,就能直接输出无多余空格的字符串:
var url = '@(HttpContext.Current.Session["id"].ToString() == "1" ? "Testing one two three" : Url.Action("GetCustomer", "Customer"))';
这样不管走哪个分支,生成的JavaScript字符串都干净利落——if分支会精准得到var url = 'Testing one two three';,完全符合你的需求!
内容的提问来源于stack exchange,提问作者Robert Smith
相关产品推荐
相关产品推荐

