วิธีเพิ่มคุณสมบัติ ID ไปที่ Html.BeginForm () ใน asp.net mvc


210

ฉันต้องการตรวจสอบรูปแบบของฉันโดยใช้ jquery แต่มันไม่มีIDคุณสมบัติ ณ ตอนนี้วิธีการเพิ่มไปยังแบบฟอร์มใน asp.net mvc? ฉันใช้สิ่งนี้ ...

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

และปลั๊กอินตัวตรวจสอบ jquery ของฉันใช้เวลานี้

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

ตอนนี้ฉันต้องการให้ id เป็นsignupform... ข้อเสนอแนะใด ๆ ...


2
คำถามที่ดีไม่มีส่วนเกี่ยวข้องกับ jquery
Don Rolling

คำตอบ:


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
ทำไมการกระทำและตัวควบคุมจึงไม่มีค่า คุณช่วยอธิบายได้มั้ย
ACP

7
ฉันไม่รู้ว่าคุณต้องการโพสต์แบบฟอร์มที่ไหนดังนั้นฉันจึงทำให้พวกเขาเป็นโมฆะ
Jason Rowe

8
การตั้งค่าการกระทำและคอนโทรลเลอร์ให้เป็นค่าว่างจะช่วยให้คุณไม่ต้องเขียนโค้ดยากอีกด้วย สิ่งนี้มีประโยชน์หากคุณมีแบบฟอร์มของคุณภายในมุมมองบางส่วนและบางส่วนนั้นถูกใช้ภายในมุมมองหลายมุมเช่นสร้างและแก้ไข
Ken Pespisa

1
จะพบ API หรือเอกสารสำหรับผู้ช่วยเหลือ html ทั้งหมดได้ที่ไหน ตัวอย่างเช่นที่จะหาสิ่งที่พารามิเตอร์หมายถึง?
Zapnologica

2
@Zapnologica ลองดูmsdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspxนี้ พารามิเตอร์ htmlAttributes ประกอบด้วยวัตถุที่มีคู่ชื่อ / ค่า ใหม่ {id = "myid", @ class = "myclass"}
Jason Rowe

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.Html (ในSystem.Web.Mvc.dll ) แบบฟอร์มเริ่มต้นจะถูกกำหนดเช่น: - รายละเอียด

BeginForm (HtmlHelper นี้ htmlHelper, สตริง actionName,
ตัวควบคุมสตริง, เส้นทางวัตถุค่า, วิธี FormMethod, วัตถุ htmlAttributes)

หมายความว่าคุณควรใช้สิ่งนี้:

Html.BeginForm (สตริง actionName, ตัวควบคุมสตริง, ค่าเส้นทางวัตถุค่า, วิธีการแบบฟอร์ม, วัตถุ 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" }))

หวังว่านี่จะช่วยใครซักคน :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.