asp.net mvcのHtml.BeginForm()にIDプロパティを追加する方法は?


210

jqueryを使用してフォームを検証したいのですがID、asp.net mvcのフォームに追加する方法のプロパティがありません。私はこれを使っています...

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

そして私のjqueryバリデータープラグインはこれを取ります、

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

今私はIDを与えたいsignupform...どんな提案...


2
良い質問です。jqueryとは何の関係もありません
Don Rolling

回答:


349

これにより、IDが追加されます。

ASP.NET MVC 5以下:

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

ASP.NET Core:フォームでタグヘルパーを使用して、IDを設定するための奇妙な構文を回避できます

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

4
なぜアクションとコントローラーがnullなのですか?それについて説明してください。
ACP、

7
フォームの投稿先がわからないので、nullにしました。
ジェイソンロウ

8
また、アクションとコントローラーをnullに設定すると、それらをハードコーディングする必要がなくなります。これは、パーシャルビュー内にフォームがあり、そのパーシャルが作成や編集などの複数のビュー内で使用される場合に役立ちます。
Ken Pespisa

1
すべてのHTMLヘルパーのAPIまたはドキュメントはどこにありますか?たとえば、パラメータが何を表すのかはどこでわかりますか?
Zapnologica 2013

2
@Zapnologicaこのmsdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspxをご覧ください。htmlAttributesパラメータは、名前と値のペアを含むオブジェクトで構成されています。new {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、文字列
controllerName、オブジェクトrouteValues、FormMethodメソッド、オブジェクトhtmlAttributes)

このように使用する必要があることを意味します:

Html.BeginForm(string actionName、string controllerName、object routeValues、FormMethod method、object 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番目の匿名オブジェクトにIDを配置する必要がありました。これは、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.