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 ...

ACP
sumber
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>
Jason Rowe
sumber
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 *@
}
MENGAKUI
sumber
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" />
}
Muhammad Ashikuzzaman
sumber
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 :)

Daniaal
sumber