不发布ASP.NET MVC .NET非核心表单字段

问题描述

我想知道你们是否可以解决我似乎没有发布所有字段的ASP.NET MVC Razor Form遇到的问题。在下面,您将找到发布到的剃刀代码和模型。

现在的问题是该表单似乎没有发布所有字段。有问题的字段是PhonePrefixPhoneBase。这是发布后的表单url编码字符串:

Form request

这也是发布后收到的模型:

User details model

现在查看生成的HTML的源代码(如下),我希望您能够看到每个有问题的字段确实都有一个name字段,我相信这是您需要的从表单发布字段?

在这里绞尽脑汁,任何帮助都很好。

更多信息:
赢10
Visual Studio 10
IIS 10
.NET Framework 4.7.2

<div class="col-xs-3">
    <label class="text-normal labelValueTrim">Country Code</label>
    <span class="float-left" style="padding-top: 8px;">+</span><input autocomplete="" class="form-control input-textBox float-left" data-val="true" data-val-maxlength="The field PhonePrefix must be a string or array type with a maximum length of '6'." data-val-maxlength-max="6" data-val-regex="Country Code must be a number" data-val-regex-pattern="([0-9][0-9]*)" id="PhonePrefix" maxlength="6" name="PhonePrefix" placeholder="Phone Prefix" style="width: 76px;" tabindex="9" type="text" value="" width="6">
    <div>
        <span class="field-validation-valid text-danger" data-valmsg-for="PhonePrefix" data-valmsg-replace="true"></span>
        <span id="{PhonePrefixValidationMessage" class="alert alert-error text-danger padding-0 remove-error-bg field-validation-valid"></span>
    </div>
</div>
<div class="col-xs-3">
    <label class="text-normal labelValueTrim">Phone Number</label>
    <input autocomplete="" class="form-control input-textBox" data-val="true" data-val-maxlength="The field PhoneBase must be a string or array type with a maximum length of '11'." data-val-maxlength-max="11" data-val-regex="Phone Base must be a number" data-val-regex-pattern="([0-9][0-9]*)" id="PhoneBase" maxlength="11" name="PhoneBase" placeholder="Phone Number" tabindex="10" type="text" value="" width="13">
    <div>
        <span class="field-validation-valid text-danger" data-valmsg-for="PhoneBase" data-valmsg-replace="true"></span>
        <span id="PhoneBaseValidationMessage" class="alert alert-error text-danger padding-0 remove-error-bg field-validation-valid"></span>
    </div>
</div>
@using (Html.BeginForm("Create","User",FormMethod.Post,new { id = "actionForm",autocomplete = "off" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true,"",new { @class = "text-danger" })

    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <input type="text" style="display:none;">
                <input type="password" style="display:none;">
                <label class="text-normal labelValueTrim">User Name<span class="text-danger">*</span></label>
                @Html.EditorFor(model => model.UserName,new { htmlAttributes = new { @class = "form-control input-textBox",@tabindex = "1",autofocus = "autofocus",@placeholder = "User name",@autocomplete = "new-username" } })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.UserName,new { @class = "text-danger" })
                    <span id="UsernameValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group">
                <label class="text-normal labelValueTrim">Password<span class="text-danger">*</span></label>
                @Html.EditorFor(model => model.Password,@tabindex = "3",@placeholder = "Password",@autocomplete = "new-password",@readonly = "readonly",onfocus = "this.removeAttribute('readonly');" } })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.Password,new { @class = "text-danger" })
                    <span id="PasswordValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group">
                <label class="text-normal labelValueTrim"> @labelDictionary["DefaultHomePage"]</label>
                @Html.DropDownListFor(model => model.LandingPage,ViewBag.LandingPage as SelectList,"Select " + @labelDictionary["DefaultHomePage"],new { @class = "form-control select2 dropdown-Box",@tabindex = "5" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.LandingPage,new { @class = "text-danger" })
                    <span id="LandingPageValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group">
                <label class="text-normal labelValueTrim"> @labelDictionary["TimeZone"]</label>
                @Html.DropDownListFor(model => model.TimeZone,ViewBag.Timezone as SelectList,"Select " + @labelDictionary["TimeZone"],@tabindex = "7" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.TimeZone,new { @class = "text-danger" })
                    <span id="TimezoneValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group margin-bottom-15">
                <label class="text-normal labelValueTrim"> @labelDictionary["Language"]</label>
                @Html.DropDownListFor(model => model.Language,ViewBag.Language as SelectList,"Select " + @labelDictionary["Language"],@tabindex = "9" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.Language,new { @class = "text-danger" })
                    <span id="LanguageValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="clearfix element-left" style="display: none;">
                <label class="text-normal labelValueTrim">Api Consume</label>
                @Html.CheckBoxFor(model => model.ApiConsume,new { @class = "fancy-checkBox float-left checkBox-size" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.ApiConsume,new { @class = "text-danger" })
                    <span id="ApiconsumeValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>
            <!-- /.form-group -->
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label class="text-normal labelValueTrim">Email<span class="text-danger">*</span></label>
                @Html.EditorFor(model => model.Email,@tabindex = "2",@placeholder = "Email" } })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.Email,new { @class = "text-danger",autocomplete = "off" })
                    <span id="EmailValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>
            <!-- /.form-group -->
            <div class="form-group">
                <label class="text-normal labelValueTrim">Role<span class="text-danger">*</span></label>
                @Html.DropDownListFor(model => model.RoleId,Model.RoleList,"Select Role",@tabindex = "4" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.RoleId,new { @class = "text-danger" })
                    <span id="RoleidValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group">
                <label class="text-normal labelValueTrim"> @labelDictionary["UserStatus"]<span class="text-danger">*</span></label>
                @Html.DropDownListFor(model => model.StatusId,Model.StatusList,"Select " + @labelDictionary["UserStatus"],@tabindex = "6" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.StatusId,new { @class = "text-danger" })
                    <span id="StatusidValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>

            <div class="form-group">
                <label class="text-normal labelValueTrim"> @labelDictionary["DateFormat"]</label>
                @Html.DropDownListFor(model => model.DateFormat,ViewBag.DateFormat as SelectList,"Select " + @labelDictionary["DateFormat"],@tabindex = "8" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.DateFormat,new { @class = "text-danger" })
                    <span id="DateFormatValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>
            <div class="form-group">
                <label class="text-normal labelValueTrim"> @labelDictionary["Unit"]</label>
                @Html.DropDownListFor(model => model.Unit,ViewBag.Unit as SelectList,@tabindex = "8" })
                <div class="text-left">
                    @Html.ValidationMessageFor(model => model.Unit,new { @class = "text-danger" })
                    <span id="UnitValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                </div>
            </div>


        </div>

        @Html.Partial("_MultiSelectList",new Anatomy.Backbone.Models.AudienceDetails { Audience = Model.Audience,AudienceList = Model.AudienceList,PhysiologyTable = PhysiologyTable.Audience })

    @if (ViewBag.HasPermission)
    {
        <div class="col-md-6">
            <div class="form-group">
                <label class="text-normal labelValueTrim">Super Admin</label>
                @Html.CheckBoxFor(model => model.IsSuperAdmin,new { @tabindex = "9",@class = "margin-top-12" })
            </div>
        </div>
    }

    @if (ViewBag.ShowPhoneNumber)
    {
        <div class="col-md-8">
            <!--Unit-->
            <div class="form-group">
                <div class="row">
                    <div class="col-xs-3">
                        <label class="text-normal labelValueTrim">Country Code</label>
                        <span class="float-left" style="padding-top: 8px;">+</span>@Html.TextBoxFor(model => model.PhonePrefix,new { @class = "form-control input-textBox float-left",style = "width: 76px;",autocomplete = "",@tabindex = "9",placeholder = "Phone Prefix",type = "text",@maxlength = "6",@width = "6" })
                        <div>
                            @Html.ValidationMessageFor(model => model.PhonePrefix,new { @class = "text-danger" })
                            <span id="{PhonePrefixValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                        </div>
                    </div>
                    <div class="col-xs-3">
                        <label class="text-normal labelValueTrim">Phone Number</label>
                        @Html.TextBoxFor(model => model.PhoneBase,new { @class = "form-control input-textBox",@tabindex = "10",placeholder = "Phone Number",maxlength = "11",width = "13" })
                        <div>
                            @Html.ValidationMessageFor(model => model.PhoneBase,new { @class = "text-danger" })
                            <span id="PhoneBaseValidationMessage" class="alert alert-error field-validation-error text-danger padding-0 remove-error-bg"></span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    }

        <div class="col-md-3 col-md-offset-9 margin-r-0">
            <input type="button" value="Cancel" name="btnCancel" data-dismiss="modal" id="btnCancel" class="btn btn-primary bg-grid-btn btn-flat model-cancel-marign-left" />
            <input type="submit" value="Create" onclick="return false;" name="btnSubmit" id="btnSubmit" class="btn btn-primary bg-grid-btn btn-flat float-right margin-left-5" />
        </div>
    </div>
}

为清楚起见,这是模型类:

public class UserDetails
{
    public UserDetails()
    {
    }

    public Guid Id { get; set; }
    public Guid? ApiSignOnId { get; set; }
    [required(ErrorMessage = "A value is required")]
    [StringLength(200,ErrorMessage = "The value entered must not be more than 200 characters")]
    public string UserName { get; set; }
    [required(ErrorMessage = "A value is required")]
    [RegularExpression("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$",ErrorMessage = "New password must be at least 8 - 20 characters long and must include one upper case,one lower case letter and one numeric digit")]
    [DataType(DataType.Password)]
    public string Password { get; set; }
    [DataType(DataType.Password)]
    public string ConfirmPassword { get; set; }
    [required(AllowEmptyStrings = false,ErrorMessage = "Email address is required")]
    [RegularExpression("^[\\w-]+(?:\\.[\\w-]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,3}$",ErrorMessage = "Not a valid email address")]
    [StringLength(200,ErrorMessage = "Email must not be more than 200 characters")]
    public string Email { get; set; }
    [required(ErrorMessage = "A value is required")]
    public Guid StatusId { get; set; }
    public bool ApiConsume { get; set; }
    [required(ErrorMessage = "A value is required")]
    public Guid RoleId { get; set; }
    public string Token { get; set; }
    public List<SelectListItem> StatusList { get; set; }
    public List<SelectListItem> RoleList { get; set; }
    public List<Guid?> Audience { get; set; }
    public List<SelectListItem> AudienceList { get; set; }
    public string TimeZone { get; set; }
    public string LandingPage { get; set; }
    public string DateFormat { get; set; }
    public string Language { get; set; }
    public string Unit { get; set; }
    public bool IsSuperAdmin { get; set; }
    [RegularExpression("([0-9][0-9]*)",ErrorMessage = "Country Code must be a number")]
    [MaxLength(6)]
    [PhoneNumberComplete("PhoneBase",ErrorMessage = "Phone base must be suppiled.")]
    public string PhonePrefix { get; set; }
    [RegularExpression("([0-9][0-9]*)",ErrorMessage = "Phone Base must be a number")]
    [MaxLength(11)]
    [PhoneNumberComplete("PhonePrefix",ErrorMessage = "Country Code base must be suppiled.")]
    public string PhoneBase { get; set; }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)