Мне было интересно, какая разница между двумя следующими способами добавления объекта HtmlAttributes в ASP.NET MVC 5. Я использую помощник RadioButtonFor html в цикле foreach, и у меня были проблемы установив атрибут name для переключателей, чтобы я мог правильно их группировать. Я работаю сейчас, но я не понимаю, почему решение, которое я нашел (решение найдено здесь: MVC RadioButtonFor group) работает, и почему мой нет.ASP.NET MVC Объект Razor HtmlAttributes
Неработающий метод:
<td>@Html.RadioButtonFor(m => item.PollRating, 1, new { @name = Html.DisplayFor(m => item.TickerSymbol) }) Below </td>
метод работы:
<td>@Html.RadioButtonFor(m => item.PollRating, 2, new { Name = Html.DisplayFor(m => item.TickerSymbol) }) Flat </td>
Разница используется @name против имени для объекта htmlAttributes. Всякий раз, когда мне приходилось назначать класс или id при использовании html-помощников, я использовал нотацию @class или @id, но в этом случае для имени не работает. Когда я парить над @name и Имя в Visual Studio я вижу тот же всплывающее сообщение, которое гласит:
« 'a.Name {получить;}
Анонимные типы:
' MvcHtmlString а является новым {MvcHtmlString Name} "
Я использую Visual Studio 2015, цель .NET Framework - 4.5.2, а версия MVC - 5.2.3.0.
Потому что, как переопределить name' атрибут '(см [здесь] (http://stackoverflow.com/questions/6057865/asp-net-mvc-3-override-name-attribute-with-textboxfor) и [здесь] (http://stackoverflow.com/questions/23912263/how-to-override-the-name-ht mlattribute-оф-бритва)). В других случаях «@ class» избегает ключевого слова «class» класса C#. '@' не требуется для '@ id', просто используйте' id'. – Jasen
Спасибо за разъяснение этого для меня. – FittyFrank
Никогда не пытайтесь переопределить атрибут 'name' при использовании методов' HtmlHelper', если вы не хотите, чтобы ваше приложение терпило неудачу. Ваша реализация не имеет смысла и не будет правильно привязываться ко всему. И если вы делаете это в цикле, тогда его 'for (int i = 0; i m [i] .TickerSymbol, 1) @ Html.RadioButtonFor (m => m [i] .TickerSymbol, 2)} ' –