加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 使用EditorFor/TextBoxFor/TextBox助手的名称

发布时间:2020-12-16 00:29:18 所属栏目:asp.Net 来源:网络整理
导读:我使用Knockout-JS来将我的视图中的属性绑定到我的视图模型。 Knockout-JS使用一个名为“data-bind”的自定义属性,您必须附加到要绑定到其中的控件来查看模型对象。 例: input type='text' name='first-name' data-bind='value: firstName'/ 注意’data-bi
我使用Knockout-JS来将我的视图中的属性绑定到我的视图模型。 Knockout-JS使用一个名为“data-bind”的自定义属性,您必须附加到要绑定到其中的控件来查看模型对象。

例:

<input type='text' name='first-name' data-bind='value: firstName'/>

注意’data-bind’属性。

在我的视图渲染中,我无法呈现具有此属性的文本框。我知道Html.EditorFor,Html.TextBoxFor和Html.TextBox帮助器都使用一个可以用来指定自定义属性的匿名对象。这个实现的唯一问题是C#不允许破折号作为变量名,所以这不会编译:
@ Html.EditorFor(m => m.FirstName,new {data-bind =“value:firstName”});

我唯一可以想到的是(在视图模型中):

public class DataBindingInput
{
     public string Value { get; set; }
     public string DataBindingAttributes { get; set }
}

public class MyViewModel
{
    ...
    public DataBindingValue firstName { get; set; }
    ....
}

和一个名为“DataBindingInput.cshtml”的视图模板:

@model DataBindingInput
<input type='text' data-binding='@Model.DataBindingAttributes' value='@Model.Value'>

唯一的麻烦是我失去了自动生成的输入名称,因此它不会在后端工作,因为模型绑定器不知道如何绑定它。

我该怎么做这个工作?

解决方法

感谢上面的Crescent Fish,看起来你可以使用下划线,MVC 3将会将它们转换为破折号,因为HTML属性名称中不允许使用下划线。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读