Bagaimana cara menambahkan properti ID ke Html.BeginForm () di asp.net mvc?


210

Saya ingin memvalidasi formulir saya menggunakan jquery tetapi tidak memiliki IDproperti seperti sekarang bagaimana menambahkannya ke formulir di asp.net mvc? Saya menggunakan ini ...

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

dan plugin validator jquery saya mengambil ini,

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

Sekarang saya ingin memberikan id sebagai signupform... Setiap saran ...


2
Pertanyaan bagus, tidak ada hubungannya dengan jquery
Don Rolling

Jawaban:


349

Ini harus mendapatkan id ditambahkan.

ASP.NET MVC 5 dan lebih rendah:

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

ASP.NET Core: Anda dapat menggunakan tag helpers dalam bentuk untuk menghindari sintaks aneh untuk mengatur id.

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

4
mengapa action dan controller tidak ada di sana? Bisakah Anda jelaskan itu?
ACP

7
Saya tidak tahu di mana Anda ingin memposting formulir, jadi saya hanya membuatnya kosong.
Jason Rowe

8
Juga memiliki action dan controller yang disetel ke null akan menyelamatkan Anda dari keharusan melakukan hard-code pada mereka. Ini berguna jika Anda memiliki formulir dalam tampilan sebagian dan sebagian digunakan dalam beberapa tampilan seperti Buat dan Edit.
Ken Pespisa

1
Di mana orang menemukan API atau dokumentasi untuk semua pembantu html? Misalnya, di mana mencari tahu parameter yang diperjuangkan?
Zapnologica

2
@Zapnologica Lihatlah msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx ini . Parameter htmlAttributes terdiri dari objek yang berisi pasangan nama / nilai. new {id = "myid", @ class = "myclass"}
Jason Rowe

7

Saya telah menambahkan beberapa kode ke proyek saya, jadi lebih nyaman.

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

Dalam System.Web.Mvc.Html (dalam System.Web.Mvc.dll ) bentuk awal didefinisikan seperti: - Detail

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

Berarti Anda harus menggunakan seperti ini:

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

Jadi, itu berhasil di 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

Mungkin agak terlambat tetapi dalam kasus saya saya harus meletakkan id di objek anonim ke-2. Ini karena yang pertama adalah untuk nilai rute, yaitu Url kembali.

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

Semoga ini bisa membantu seseorang :)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.