Come aggiungere la proprietà ID a Html.BeginForm () in asp.net mvc?


210

Voglio convalidare il mio modulo usando jquery ma al momento non ha una IDproprietà come aggiungerlo al modulo in asp.net mvc? Sto usando questo ...

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

e il mio plugin validator jquery prende questo,

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

Ora voglio dare id come signupform... Qualsiasi suggerimento ...


2
Bella domanda, non ha nulla a che fare con jquery
Don Rolling

Risposte:


349

Questo dovrebbe ottenere l'ID aggiunto.

ASP.NET MVC 5 e versioni precedenti:

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

ASP.NET Core: è possibile utilizzare gli helper di tag nei moduli per evitare la sintassi dispari per l'impostazione dell'id.

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

4
perché azione e controller sono nulli lì? Potresti spiegarlo per favore?
ACP,

7
Non so dove vuoi pubblicare il modulo, quindi li ho appena resi nulli.
Jason Rowe,

8
Anche avere l'azione e il controller impostati su null ti evita di doverli codificare. Ciò è utile se il modulo è all'interno di una vista parziale e tale parziale viene utilizzato in più viste come Crea e Modifica.
Ken Pespisa,

1
Dove si trovano l'API o la documentazione per tutti gli helper HTML? Ad esempio, dove scoprire cosa significano i parametri?
Zapnologica,

2
@Zapnologica Dai un'occhiata a questo msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx . Il parametro htmlAttributes è costituito da un oggetto che contiene coppie nome / valore. new {id = "myid", @ class = "myclass"}
Jason Rowe,

7

Ho aggiunto del codice al mio progetto, quindi è più conveniente.

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

In System.Web.Mvc.Html (in System.Web.Mvc.dll ) il modulo iniziale è definito come: - Dettagli

BeginForm (this HtmlHelper htmlHelper, string actionName, string
controllerName, object routeValues, metodo FormMethod, object htmlAttributes)

Mezzi che dovresti usare in questo modo:

Html.BeginForm (string actionName, string controllerName, object routeValues, metodo FormMethod, object htmlAttributes)

Quindi, ha funzionato in 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

Potrebbe essere un po 'in ritardo, ma nel mio caso ho dovuto inserire l'id nel secondo oggetto anonimo. Questo perché il primo è per i valori di route, ovvero l'URL di ritorno.

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

Spero che questo possa aiutare qualcuno :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.