C# 如何在mvc中处理多个文本框

C# 如何在mvc中处理多个文本框,c#,jquery,asp.net-mvc,validation,model-view-controller,C#,Jquery,Asp.net Mvc,Validation,Model View Controller,我有一个模范人物 [DisplayName("First Name")] [Required("This field is required")] public string FirstName { get; set; } [DisplayName("Last Name")] [Required("This field is required")] public string LastName { get; set; } [UmbracoDisplayLocalised("Title")]

我有一个模范人物

 [DisplayName("First Name")]
[Required("This field is required")]
public string FirstName { get; set; }

[DisplayName("Last Name")]
[Required("This field is required")]
public string LastName { get; set; }

[UmbracoDisplayLocalised("Title")]
public string Title { get; set; }

[DisplayName("Email")]
[Email("Please enter a valid email")]
[Required("This field is required")]
public string Email { get; set; }
该模型在以下视图中引用

    <div class="fields" id="event_additional_attendee" style="display:none;">


        <ul>
            <li>
                @Html.TextBoxFor(x => x.Email, new { placeholder = "Email Id" })
                @Html.ValidationMessageFor(x => x.Email, "", new { @class = "required" })
            </li>

            <li>
                @Html.TextBoxFor(x => x.FirstName, new { placeholder = "First Name" })
                @Html.ValidationMessageFor(x => x.FirstName, "", new { @class = "required" })
            </li>
            <li>
                @Html.TextBoxFor(x => x.LastName, new { placeholder = "Last Name" })
                @Html.ValidationMessageFor(x => x.LastName, "", new { @class = "required" })
            </li>
            <li>
                @Html.TextBoxFor(x => x.Title, new { placeholder = "Title" })
                @Html.ValidationMessageFor(x => x.Title, "", new { @class = "required" })
            </li>

        </ul>

    </div>
    <div class="toplink">
        <p><a href="#" id="plus1" onclick="addForms()">+ Add More</a></p>
        <p><a href="#" id="minus1" onclick="removeForms()">- Remove </a></p>
    </div>
</div> 


  • @Html.TextBoxFor(x=>x.Email,新的{placeholder=“Email Id”}) @Html.ValidationMessageFor(x=>x.Email,“,new{@class=“required”})
  • @Html.TextBoxFor(x=>x.FirstName,新的{placeholder=“First Name”}) @Html.ValidationMessageFor(x=>x.FirstName,“,new{@class=“required”})
  • @TextBoxFor(x=>x.LastName,新的{placeholder=“LastName”}) @Html.ValidationMessageFor(x=>x.LastName,“,new{@class=“required”})
  • @TextBoxFor(x=>x.Title,新的{placeholder=“Title”}) @Html.ValidationMessageFor(x=>x.Title,“,new{@class=“required”})

每次单击AddMore链接时,上面提到的DOM结构都会使用模型属性重复,这是由Jquery处理的。因此,将生成具有相同名称的多个文本框。
我想知道如何分别验证(服务器端和客户端)每个文本框。我知道这个问题是重复的,但我找不到更好的解决方案。

jQuery验证规则与每个控件的表单名称一起定义

在您的情况下,为新克隆的控件定义了相同的名称,这将为给定的控件名称触发匹配的规则

要单独验证每个文本框,请使用

以编程方式触发元素验证

var validator = $( "#myform" ).validate();
validator.element( "#myselect" ); // validate individual

我有与您相同的代码:

此代码为html:

<div class="grid-4"><div class="form-label"><label>Rooms</label>@Html.DropDownList("Room",  new SelectList(Model.Rooms))</div></div>
Rooms@Html.DropDownList(“房间”,新选择列表(模型房间))
这段代码是:

<script type="text/javascript">
$(document).ready(function() {
    $('#Room').change(function(){
        var valueRoomId = $.trim($("#Room").val()).toString();
        $("#ol").empty();
        if(valueRoomId >= "2") {

            for (var i = 2; i <= valueRoomId; i++) {
                $("#ol").append("<div class='grid-4'><div class='form-label'><label></label><h4>Room" + i + "</h4>");

                $("#ol").append("<div class='grid-4'>" +
                    "<div class='formErrorContent' style='color: red;float: right;' " +
                    "data-valmsg-for='Adults_" + i + "' data-valmsg-replace='true'></div>" +
                    "<div class='form-label'><label>Adults</label><select class='required' " +
                    "data-val-required='This field is required.'" +
                    "name='Adults_" + i + "' id='Adults_" + i + "'>" +
                    "<option value=''>---Select Adults---</option>" + "@Html.Raw(adults.ToString())" + "</select></div></div>");

                $("#ol").append("<div class='grid-4 last-grid'>" +
                    "<div class='formErrorContent' style='color: red;float: right;' " +
                    "data-valmsg-for='Childrens_" + i + "' data-valmsg-replace='true'></div>" +
                    "<div class='form-label'><label>Childrens</label><select class='required'" +
                    "data-val-required='This field is required.'" +
                    "name='Childrens_" + i + "' id='Childrens_" + i + "'>" +
                "<option value=''>---Select Childrens---</option>" +
                "@Html.Raw(childrens.ToString())" +
                + "</select></div></div>");
        }
    }
   });
});

$(文档).ready(函数(){
$('#房间')。更改(功能(){
var valueRoomId=$.trim($(“#Room”).val()).toString();
$(“#ol”).empty();
如果(valueRoomId>=“2”){

对于(var i=2;i通过Visual Studio以强类型生成该视图。然后,它将自动为您验证所有视图,假设您提供了该模型。

您将把所有重复输入放在一个表单中,并一次性提交它们吗?还是希望每组输入以单独的表单形式提交?在创建时如何创建元素在客户端克隆中单击“添加更多”
,或者调用ajax调用?是的,我想将所有输入拉到一个表单中,并在一个表单中提交它们time@MuraliMurugesan客户端内克隆