为什么String.Trim()
在Razor视图中使用string.empty
时会抛出异常:
console.log('@Model.Test.FirstOrDefault().Trim()');
(列表为空,所以我得到string.empty
),然后:
Server Error in '/' Application.
Object reference not set to an instance of an object.
(...)'
Line 326: console.log('@Model.Test.FirstOrDefault().Trim()');
答案 0 :(得分:4)
如果列表为空,那么你就不会得到string.Empty
而是null,因为空字符串列表的第一个元素的默认值是null
你可以不要在空对象上调用.Trim()
。
如果您使用的是C#6,那么您可以这样做:
console.log('@Model.Test.FirstOrDefault()?.Trim()');
请注意在.Trim()
之前添加一个问号,它会进行空检查,以便只有在左侧不为空时才会调用修剪。
或者你可以这样做:
console.log('@(Model.Test.FirstOrDefault() ?? string.Empty).Trim()');
哪个使用null合并运算符用string.Empty
显式替换null,并且在以前版本的C#中可用
答案 1 :(得分:0)
你可能在某个地方null
。您可以使用c#6中的elvis
运算符轻松克服它:
console.log('@Model.Test?.FirstOrDefault()?.Trim()??"Null property"');