Як додати властивість ідентифікатора до Html.BeginForm () в mvc asp.net?


210

Я хочу перевірити свою форму за допомогою jquery, але зараз вона не має IDвластивості, як додати її до форми в asp.net mvc? Я використовую це ...

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

і мій плагін jquery validator приймає це,

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

Тепер я хочу дати ідентифікатор як signupform... Будь-яка пропозиція ...


2
Добре запитання, не має нічого спільного з jquery
Дон Роллінг

Відповіді:


349

Це має отримати ідентифікатор.

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
чому дія та контролер є нульовими? Чи можете ви пояснити це PLZ?
ACP

7
Я не знаю, де ви хочете опублікувати форму, тому я просто зробив їх недійсними.
Джейсон Роу

8
Також встановлення дії та контролера встановлено на нуль, позбавляє вас від необхідності їх жорсткого кодування. Це корисно, якщо ви маєте форму в частковому представленні, а часткова використовується в кількох переглядах, таких як Створити та Редагувати.
Кен Песписа

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, string actionName, строковий
контролерName, об'єкт routeValues, метод FormMethod, об'єкт htmlAttributes)

Засоби, якими ви повинні користуватися так:

Html.BeginForm (string actionName, string controllerName, object objectValues, метод FormMethod, object 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.