使用带连字符的属性创建元素而不是使用时,是否有更好的语法:
<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>
Run Code Online (Sandbox Code Playgroud)
查看HTML 5和WIA ARIA提议标准的HTML规范,似乎HTML属性中的连字符被设计为更常见的某种简单的名称间距.
例如,HTML 5建议使用自定义属性作为前缀,data-WIA ARIA使用aria-所有WIA ARIA属性的前缀.
在ASP.NET MVC中使用HTML帮助程序时,例如<%= Html.TextBox("name", value, new { attribute = attributeValue }) %>将匿名对象转换为字典.
不幸的是,在C#中,名称中不支持连字符,因此唯一的选择是创建字典.其语法非常详细,有没有人看到更好的替代方法或改变ASP.NET MVC的HTML扩展功能的简单方法,而无需重写整个扩展?
例如,data-bind我在声明和Html.TextboxFor帮助时如何创建属性?
简单地做:
@Html.TextBoxFor(model => model.SomeProperty, new { data-bind="something" })
Run Code Online (Sandbox Code Playgroud)
由于带有短划线" - "符号的命名问题,这是不合法的.有没有办法解决这个问题,或者是否无法传递名称包含破折号的html属性?
注意:我试图拍打@(这有助于你想在属性前面传递一个与C#保留字匹配的属性,比如"class"),但这并不能解决问题......
我想知道是否有人可以帮我解决我面临的问题.我正在尝试使用razor在DropDownListFor上创建搜索.
private List<SelectListItem> LoadStockitems()
{
List<SelectListItem> selectItems = new List<SelectListItem>();
foreach (var role in GetStockItemsFromDB())
{
SelectListItem listItem = new SelectListItem();
listItem.Value = role.StockCode;
listItem.Text = role.Description;
selectItems.Add(listItem);
}
return selectItems;
}
ViewBag.AllStockList = LoadStockitems();
Run Code Online (Sandbox Code Playgroud)
视图
@Html.DropDownListFor(x =>
x.StockCode,
(IEnumerable<SelectListItem>)ViewBag.AllStockList,
new {
@class = "form-control",
@Value = @Model.Description,
onchange = "this.form.submit();"
})
Run Code Online (Sandbox Code Playgroud)
我可以使用Html做到这一点,但我无法弄清楚如何使用剃须刀.在HTML中,
@using (Html.BeginForm("Hello", "Hello"))
{
<div class="form-group">
<label class="control-label"> Select A Customer </label>
<select class="selectpicker bs-select form-control"
name="CustomerID"
onchange="this.form.submit()"
data-show-subtext="true"
data-live-search="true">
@foreach (var Customer in @Model.CustomerSelect)
{
<option …Run Code Online (Sandbox Code Playgroud)