Asp.net mvc .Net MVC Razor-三元运算符内的串联字符串

Asp.net mvc .Net MVC Razor-三元运算符内的串联字符串,asp.net-mvc,razor,ternary-operator,string-concatenation,Asp.net Mvc,Razor,Ternary Operator,String Concatenation,在三元运算符中使用时,如何连接以下字符串以正确渲染 <input @(field.Type == "number" ? $"data-val-number=The field {field.Label} must be a number" : "") /> 上面的渲染不正确-它的输出如下,缺少双引号: <input type="text" data-val-number=The field Time must be a number /> 转义引号呢 <i

在三元运算符中使用时,如何连接以下字符串以正确渲染

<input @(field.Type == "number" ? $"data-val-number=The field {field.Label}  must be a number" : "") />

上面的渲染不正确-它的输出如下,缺少双引号:

<input type="text" data-val-number=The field Time must be a number />

转义引号呢

<input @Html.Raw(field.Type == "number" ? $"data-val-number=\"The field {field.Label}  must be a number\"" : "") />


当我为输入元素添加结束标记时,您的代码按预期工作(显示数字类型输入的消息)。
@Shyju如果您在呈现时查看源代码,它缺少双引号:
通常您可以使用Razor的条件属性,但是它们似乎不适用于
数据val-*
属性,因此需要
if/else
块来生成输入。但是,手动添加客户端验证使用的属性这一事实表明存在设计问题。您应该使用条件验证属性来生成它们。或者您可以尝试
,您可能应该首先测试代码,以了解它为什么不起作用。@StephenMuecke感谢您的提示!添加了Html.Raw。现在转义引号的呈现方式与我预期的一样。