如何解决不发布ASP.NET MVC .NET非核心表单字段
我想知道你们是否可以解决我似乎没有发布所有字段的ASP.NET MVC Razor Form遇到的问题。在下面,您将找到发布到的剃刀代码和模型。
现在的问题是该表单似乎没有发布所有字段。有问题的字段是PhonePrefix
和PhoneBase
。这是发布后的表单url编码字符串:
这也是发布后收到的模型:
现在查看生成的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 举报,一经查实,本站将立刻删除。