必需属性在 ASP.NET 中不起作用
Posted
技术标签:
【中文标题】必需属性在 ASP.NET 中不起作用【英文标题】:Required attribute not working in ASP.NET 【发布时间】:2021-07-24 22:49:58 【问题描述】:我已经创建了这个 C# 文件以在 ASP.NET 5.0 中搭建。问题是我不希望家庭号码是必需的,但生成的页面(具有实体框架的控制器)Create 仍然如此计算。知道为什么会发生这种情况吗?
public class Patient
[Key]
public string MRN get; set;
[Required]
public string FirstName get; set;
[Required]
public string MiddleName get; set;
[Required]
public string LastName get; set;
[Required]
public string Address get; set;
[Required]
public string Gender get; set;
[Required]
[Display(Name = "Mobile Number")]
public int MobNumber get; set;
[Display(Name = "Home Number")]
public int HomeNumber get; set;
[Required]
public string Nationality get; set;
这是Create.cshtml
的代码,它曾经工作的奇怪之处,现在每次我尝试生成控制器和视图时,都需要家庭号码。
@
ViewData["Title"] = "Create";
<h1>Create</h1>
<h4>Patient</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="MRN" class="control-label"></label>
<input asp-for="MRN" class="form-control" />
<span asp-validation-for="MRN" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="FirstName" class="control-label"></label>
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="MiddleName" class="control-label"></label>
<input asp-for="MiddleName" class="form-control" />
<span asp-validation-for="MiddleName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName" class="control-label"></label>
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Address" class="control-label"></label>
<input asp-for="Address" class="form-control" />
<span asp-validation-for="Address" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Gender" class="control-label"></label>
<input asp-for="Gender" class="form-control" />
<span asp-validation-for="Gender" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="MobNumber" class="control-label"></label>
<input asp-for="MobNumber" class="form-control" />
<span asp-validation-for="MobNumber" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="HomeNumber" class="control-label"></label>
<input asp-for="HomeNumber" class="form-control" />
<span asp-validation-for="HomeNumber" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Nationality" class="control-label"></label>
<input asp-for="Nationality" class="form-control" />
<span asp-validation-for="Nationality" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts
@await Html.RenderPartialAsync("_ValidationScriptsPartial");
【问题讨论】:
你能把Create
的控制器代码放上去吗?
如下所述,您需要使您的属性可以为空。但是,请记住,电话号码不是整数。使用int
(或int?
)是一个糟糕的选择。使用字符串来存储这些值并使用属性/数据注释来确保它们是有效的
【参考方案1】:
如果你不希望值是必需的,你应该让它们可以为空:
[Display(Name = "Home Number")]
public int? HomeNumber get; set;
【讨论】:
以上是关于必需属性在 ASP.NET 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章