Wie füge ich eine ID-Eigenschaft zu Html.BeginForm () in asp.net mvc hinzu?

210

Ich möchte mein Formular mit jquery validieren, aber es hat noch keine IDEigenschaft, wie ich es dem Formular in asp.net mvc hinzufügen kann. Ich benutze das ...

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

und mein jquery validator Plugin nimmt dies,

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

Jetzt möchte ich einen Ausweis geben als signupform... Irgendwelche Vorschläge ...

ACP
quelle
2
Gute Frage, hat nichts mit jquery zu tun
Don Rolling

Antworten:

349

Dies sollte die ID hinzugefügt bekommen.

ASP.NET MVC 5 und niedriger:

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

ASP.NET Core: Sie können Tag-Helfer in Formularen verwenden , um die ungerade Syntax zum Festlegen der ID zu vermeiden.

<form asp-controller="Account" asp-action="Register" method="post" id="signupform" role="form"></form>
Jason Rowe
quelle
4
Warum sind Aktion und Controller dort null? Könnten Sie es bitte erklären?
ACP
7
Ich weiß nicht, wo Sie das Formular veröffentlichen möchten, also habe ich sie einfach auf Null gesetzt.
Jason Rowe
8
Wenn Sie die Aktion und den Controller auf Null setzen, müssen Sie sie nicht mehr hart codieren. Dies ist nützlich, wenn Sie Ihr Formular in einer Teilansicht haben und dieses Teil in mehreren Ansichten wie Erstellen und Bearbeiten verwendet wird.
Ken Pespisa
1
Wo findet man die API oder Dokumentation für alle HTML-Helfer? Wo finden Sie zum Beispiel heraus, wofür die Parameter stehen?
Zapnologica
2
@Zapnologica Schauen Sie sich diese msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx an . Der Parameter htmlAttributes besteht aus einem Objekt, das Name / Wert-Paare enthält. neu {id = "myid", @ class = "myclass"}
Jason Rowe
7

Ich habe meinem Projekt Code hinzugefügt, damit es bequemer ist.

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 *@
}
EINGESTEHEN
quelle
5

In System.Web.Mvc.Html (in System.Web.Mvc.dll ) ist das Startformular wie folgt definiert: - Details

BeginForm (dieser HtmlHelper htmlHelper, Zeichenfolge actionName, Zeichenfolge
controllerName, Objekt routeValues, FormMethod-Methode, Objekt htmlAttributes)

Mittel, die Sie wie folgt verwenden sollten:

Html.BeginForm (Zeichenfolge actionName, Zeichenfolge controllerName, Objekt routeValues, FormMethod-Methode, Objekt htmlAttributes)

Also hat es in MVC 4 funktioniert

@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" />
}
Muhammad Ashikuzzaman
quelle
4

Mag etwas spät sein, aber in meinem Fall musste ich die ID in das 2. anonyme Objekt einfügen. Dies liegt daran, dass der erste für Routenwerte ist, dh die Rückgabe-URL.

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

Hoffe das kann jemandem helfen :)

Daniaal
quelle