asp.net mvc htmlattribute без значения - PullRequest
7 голосов
/ 09 ноября 2010

Я пытаюсь создать скрытую форму в соответствии со спецификацией HTML5, где скрытый атрибут используется без значения. Теперь я понятия не имею, как заставить его в Mpc asp.net

<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new {hidden}); %>

метод, как указано выше, не компилируется с

Compiler Error Message: CS0103: The name 'hidden' does not exist in the current context

Кто-нибудь знает выход?

EDIT

Просто из любопытства использовать помощников по умолчанию html?

Ответы [ 3 ]

5 голосов
/ 09 ноября 2010

У меня такое ощущение, что метод BeginForm по умолчанию не будет делать то, что вы хотите.Вы можете создать новый метод BeginForm, который будет выводить тег <form> по вашему желанию, или просто написать тег <form> вручную в HTML и заполнить URL-адрес с помощью механизма маршрутизации:

<form action="<%: Url.Action("ChangeContent", "Content") %>" method="post" hidden>
    ...
</form>

ОБНОВЛЕНИЕ:

Чтобы ответить на ваш вопрос, отредактировать это невозможно с помощью стандартных помощников.Вот ссылка на MSDN: http://msdn.microsoft.com/en-us/library/dd492714.aspx. Согласно документации, атрибуты должны быть парами имя / значение.

4 голосов
/ 09 ноября 2010

Коллекция HtmlAttribute состоит из пар ключ-значение, и здесь hidden является ключом. Вы должны дать ему значение тоже. Как вы уже написали, компилятор интерпретирует это так, как будто вы ссылаетесь на переменную hidden, которую вы не определили.

Если вы хотите hidden = "" в своем HTML, используйте

<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new { hidden = "" }); %>

Согласно спецификации:

hidden является boolean attribute. Логические атрибуты могут быть указаны несколькими способами [ref] :

наличие логического значения атрибут элемента представляет истинное значение и отсутствие Атрибут представляет ложное значение.

Если атрибут присутствует, его значение должен быть либо пустой строкой, либо значение, которое является ASCII регистронезависимое совпадение для каноническое имя атрибута, без ведущие или конечные пробелы.

Другими словами, атрибут hidden можно представить тремя способами

<... hidden ...>
<... hidden="" ...>
<... hidden="hidden" ...>
2 голосов
/ 25 ноября 2015

Просто используйте string.Empty, он будет выводиться без атрибута. По крайней мере, в MVC 5.

@using (Html.BeginForm("Login", "Main", FormMethod.Post, new { name = "loginForm", ng_controller = "loginController", @class = "form-horizontal", novalidate = string.Empty}))....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...