Подтвердить что ты не робот

Добавление дефиса в имя атрибута html с помощью помощника MVC3 WebGrid

У меня возникла проблема с добавлением настраиваемого атрибута данных HTML5 в таблицу, которая отображается с помощью помощника WebGrid. Я хочу, чтобы тег таблицы выглядел следующим образом:

<table data-test="testdata"><!-- Table Content --></table>

Вот пример с использованием механизма просмотра Razor:

@{
    var myUser = new
    {
        Id = 1,
        Name = "Test User"
    };

    var users = new[] { myUser };

    var grid = new WebGrid(users);
}
@grid.GetHtml(htmlAttributes: new { data-test = "testdata"})

В последней строке появится объявление с недопустимым анонимным типом. ошибка из-за дефиса в тесте данных.

С некоторыми другими входными HtmlHelpers вы можете использовать знак подчеркивания вместо дефиса, и он будет автоматически изменен на дефис при визуализации. Это не происходит с WebGrid.

Если я передаю словарь для htmlAttributes:

@grid.GetHtml(htmlAttributes: new Dictionary<string, object> {{ "data-test", "testdata"}})

таблица получает визуализацию как таковую:

<table Comparer="System.Collections.Generic.GenericEqualityComparer`1[System.String]" Count="1" Keys="System.Collections.Generic.Dictionary`2+KeyCollection[System.String,System.Object]" Values="System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Object]"><!-- Table Content --></table>

Что я делаю неправильно, и что мне нужно сделать, чтобы сделать атрибут по желанию?

4b9b3361

Ответ 1

Я боюсь, что это невозможно. К сожалению, WebGrid не поддерживает тот же синтаксис, что и стандартный хелпер HTML, например TextBoxFor, где вы могли:

@Html.TextBoxFor(x => x.SomeProp, new { data_test = "testdata" })

и подчеркивание автоматически преобразуется в тире.