Làm cách nào để thêm thuộc tính ID vào Html.BeginForm () trong asp.net mvc?


210

Tôi muốn xác thực biểu mẫu của mình bằng jquery nhưng hiện tại nó không có IDthuộc tính làm thế nào để thêm nó vào biểu mẫu trong asp.net mvc? Tôi đang sử dụng ...

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

và plugin trình xác thực jquery của tôi có điều này,

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

Bây giờ tôi muốn cung cấp id dưới dạng signupform... Bất kỳ đề xuất nào ...


2
Câu hỏi hay, không liên quan gì đến jquery
Don Rolling

Câu trả lời:


349

Điều này sẽ nhận được id thêm.

ASP.NET MVC 5 trở xuống:

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

ASP.NET Core: Bạn có thể sử dụng trình trợ giúp thẻ trong các biểu mẫu để tránh cú pháp lẻ để đặt id.

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

4
Tại sao hành động và bộ điều khiển là null ở đó? Bạn có thể giải thích nó plz?
ACP

7
Tôi không biết bạn muốn đăng mẫu đơn ở đâu nên tôi chỉ làm cho chúng không có giá trị.
Jason Rowe

8
Ngoài ra, việc cài đặt hành động và bộ điều khiển thành null giúp bạn không phải mã hóa chúng. Điều này hữu ích nếu bạn có biểu mẫu của mình trong chế độ xem một phần và phần đó được sử dụng trong nhiều chế độ xem như Tạo và Chỉnh sửa.
Ken Pespisa

1
Trường hợp nào người ta tìm thấy API hoặc tài liệu cho tất cả những người trợ giúp html? Ví dụ, nơi tìm ra những gì các tham số đứng cho?
Zapnologica

2
@Zapnologica Hãy xem msdn.microsoft.com/en-us/l Library / dd460542% 28v = vs.108% 29.aspx . Tham số htmlAttribut bao gồm một đối tượng có chứa các cặp tên / giá trị. new {id = "myid", @ class = "mygroup"}
Jason Rowe

7

Tôi đã thêm một số mã vào dự án của mình, vì vậy nó thuận tiện hơn.

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

Trong System.Web.Mvc.Html (trong System.Web.Mvc.dll ) biểu mẫu bắt đầu được xác định như sau: - Chi tiết

BeginForm (HtmlHelper htmlHelper, chuỗi actionName, chuỗi
controlName, object routeValues, phương thức FormMethod, đối tượng htmlAttribution)

Có nghĩa là bạn nên sử dụng như thế này:

Html.BeginForm (chuỗi actionName, chuỗi controlName, object routeValues, phương thức FormMethod, đối tượng htmlAttribution)

Vì vậy, nó hoạt động trong 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

Có thể hơi muộn nhưng trong trường hợp của tôi, tôi đã phải đặt id vào đối tượng ẩn danh thứ 2. Điều này là do cái thứ nhất dành cho các giá trị tuyến, tức là Url trả về.

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

Hy vọng điều này có thể giúp ai đó :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.