我试图在我的ASP.NET MVC 1项目中使用HTML5数据属性.(我是C#和ASP.NET MVC的新手.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
Run Code Online (Sandbox Code Playgroud)
上面的htmlAttributes中的"data-details"给出以下错误:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Run Code Online (Sandbox Code Playgroud)
它在我使用data_details时有效,但我想它需要按照规范以"data-"开头.
我的问题:
如何data-*使用TextboxFor 添加html属性?
这就是我目前拥有的:
@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })
Run Code Online (Sandbox Code Playgroud)
如你所见,这-引起了一个问题data-url.这是怎么回事?
作品
<a href="@Url.Action("edit", "markets", new { id = 1 })"
data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a>
Run Code Online (Sandbox Code Playgroud)
不工作 - 为什么?
@Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"})
Run Code Online (Sandbox Code Playgroud)
看来你不能把像data-icon ="gear"这样的东西传递给htmlAttributes?
建议?
问题:我需要创建一个这样的下拉列表:
<select id="ddCustomers" data-placeholder="Choose a customer" class="chzn-select" style="width:350px;" tabindex="1" multiple>
Run Code Online (Sandbox Code Playgroud)
现在我可以像这样添加自定义属性:
@Html.DropDownListFor(m => m.Id, Model.Values, new { @disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果变量名中有" - ",那么它就不会编译.
@Html.DropDownListFor(m => m.Id, Model.Values, new { @disabled = "disabled", @data-placeholder = "whatever" })
Run Code Online (Sandbox Code Playgroud)
那么多重,没有属性值呢?
如果我传递Dictionary或NameValueColletion而不是new { @disabled = "disabled" },则它输出NameValueColletion/Dictionary的属性...
如何在属性键中传递带有特殊字符的属性?
我几分钟前才知道,添加数据属性是向html元素添加自定义信息的好方法.所以我试着这样做:
<%= Html.TextBox ("textBox", "Value", new { data-myid = m.ID })%>
Run Code Online (Sandbox Code Playgroud)
但最终会出现语法错误.如何定义自定义数据属性?
编辑:
我看到我可以使用以下方法实现此效果:
<%= Html.TextBox ("textBox", "Value", new Dictionary<string, object> {{ "data-myid", m.ID }})%>
Run Code Online (Sandbox Code Playgroud)
但那看起来并不......嗯......干净!有没有更好的方法来做到这一点?
例如,data-bind我在声明和Html.TextboxFor帮助时如何创建属性?
简单地做:
@Html.TextBoxFor(model => model.SomeProperty, new { data-bind="something" })
Run Code Online (Sandbox Code Playgroud)
由于带有短划线" - "符号的命名问题,这是不合法的.有没有办法解决这个问题,或者是否无法传递名称包含破折号的html属性?
注意:我试图拍打@(这有助于你想在属性前面传递一个与C#保留字匹配的属性,比如"class"),但这并不能解决问题......
我想添加v-on:click或@click,例如以下html helper方法:
@Html.TextBoxFor(x => x.ItnScanCaseCode, new { @id="txtid",@click = "onchangeevent();" })
Run Code Online (Sandbox Code Playgroud)
怎么做?