Как добавить свойство ID в Html.BeginForm () в asp.net mvc?


210

Я хочу проверить свою форму с помощью jquery, но на данный момент у нее нет IDсвойства, как добавить ее в форму в asp.net mvc? Я использую это ...

<% using (Html.BeginForm()) {%>

и мой плагин проверки JQuery принимает это,

var validator = $("#signupform").validate({

Теперь я хочу дать идентификатор как signupform... Любое предложение ...


2
Хороший вопрос, не имеет ничего общего с jquery
Дон Роллинг

Ответы:


350

Это должно добавить идентификатор.

ASP.NET MVC 5 и ниже:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "signupform" }))
   { } %>

ASP.NET Core: вы можете использовать теговые помощники в формах, чтобы избежать нечетного синтаксиса для установки идентификатора.

<form asp-controller="Account" asp-action="Register" method="post" id="signupform" role="form"></form>

4
почему действие и контроллер там нулевые? Не могли бы вы объяснить это, плз?
ACP

7
Я не знаю, где вы хотите разместить форму, поэтому я просто сделал их недействительными.
Джейсон Роу

8
Кроме того, если для action и controller установлено значение null, вам не придется жестко их кодировать. Это полезно, если ваша форма находится в частичном представлении, а эта частичная используется в нескольких представлениях, таких как «Создать» и «Редактировать».
Кен Песписа

1
Где найти API или документацию для всех помощников HTML? Например, где узнать, что означают параметры?
Zapnologica

2
@Zapnologica Посмотрите на этот msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx . Параметр htmlAttributes состоит из объекта, который содержит пары имя / значение. new {id = "myid", @ class = "myclass"}
Джейсон Роу

7

Я добавил немного кода в свой проект, чтобы он был более удобным.

HtmlExtensions.cs:

namespace System.Web.Mvc.Html
{
    public static class HtmlExtensions
    {
        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string formId)
        {
            return htmlHelper.BeginForm(null, null, FormMethod.Post, new { id = formId });
        }

        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string formId, FormMethod method)
        {
            return htmlHelper.BeginForm(null, null, method, new { id = formId });
        }
    }
}

MySignupForm.cshtml:

@using (Html.BeginForm("signupform")) 
{
    @* Some fields *@
}

5

В System.Web.Mvc.HtmlSystem.Web.Mvc.dll ) форма начала определяется следующим образом: - Подробности

BeginForm (это HtmlHelper htmlHelper, строка actionName, строка
controllerName, объект routeValues, метод FormMethod, объект htmlAttributes)

Означает, что вы должны использовать, как это:

Html.BeginForm (строка actionName, строка controllerName, объект routeValues, метод FormMethod, объект htmlAttributes)

Итак, это сработало в MVC 4

@using (Html.BeginForm(null, null, new { @id = string.Empty }, FormMethod.Post,
    new { @id = "signupform" }))
{
    <input id="TRAINER_LIST" name="TRAINER_LIST" type="hidden" value="">
    <input type="submit" value="Create" id="btnSubmit" />
}

4

Может быть немного поздно, но в моем случае мне пришлось поместить идентификатор во 2-й анонимный объект. Это потому, что 1-й предназначен для значений маршрута, т.е. возвращаемого URL.

@using (Html.BeginForm("Login", "Account", new {  ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "signupform", role = "form" }))

Надеюсь, что это может помочь кому-то :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.