剃刀转义数据属性中的单引号

Razor escaping single quotes in data attributes

本文关键字:单引号 数据属性 转义 剃刀      更新时间:2023-09-26

我试图让Razor显示一个带有data_bind属性的下拉列表

开始
 @Html.DropDownListFor(model => model.Form.selectedItem, Model.empty, new
               {
                    @class = "multiselected" 
               })

我已经尝试了多种方法来获得使用字典对象

添加的数据
 { "data_bind" , MvcHtmlString.Create("options: optionSelected, optionsText: 'name', optionsValue: 'id', optionsCaption: 'Choose...'") }

 "data_bind" = MvcHtmlString.Create("options: optionSelected, optionsText: 'name', optionsValue: 'id', optionsCaption: 'Choose...'") 
 "data_bind" = Html.Raw("options: optionSelected, optionsText: 'name', optionsValue: 'id', optionsCaption: 'Choose...'") 
"data_bind" = Html.Raw(MvcHtmlString.Create("options: optionSelected, optionsText: 'name', optionsValue: 'id', optionsCaption: 'Choose...'"))

无论我尝试什么,单引号都会更改为'。到底发生了什么事?

编辑

结果是knockout不介意引号,仍然可以绑定。其他问题与淘汰和数据属性无关。

即使在html中转义了单引号,也不会影响绑定,它会正确地将它们视为单引号。

ko.applyBindings({
  options: [{ name: 'first one', id: '1' },
            { name: 'second one', id: '2' }, 
            { name: 'third one', id: '3' }]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<select data-bind="options: options, optionsText: &#39;name&#39;, optionsValue: &#39;id&#39;, optionsCaption: &#39;Choose...&#39;">
</select>

https://jsfiddle.net/oxtupfx8/