我正在使用VS 2017的ASP.NET核心。我希望允许用户创建一个雇员记录,在那里他们可以将address输入字段保持为空,即作为可选字段输入。
使用Bind("Name“、" address ")总是验证输入,当address字段为空时,请求总是失败。
这是数据模型。
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}从Post请求读取参数的Create方法具有如下的模型绑定
public async Task<IActionResult> Create([Bind("Name,Address")] Employee emp)视图具有使用Employee的默认asp窗体。
<div class="col-md-10">
<input asp-for="Address" class="form-control" />
<span asp-validation-for="Address" class="text-danger"></span>
</div>是否有任何方法将地址输入字段作为模型绑定的可选输入?
发布于 2017-07-23 11:39:43
我对Asp.net内核非常陌生,但从我到目前为止所了解到的情况来看,我将这样做:
<form method="post" asp-controller="YourController" asp-action="Create">
<div>
<input asp-for="Name" placeholder="Name"/>
<div class="stylized-error">
<span asp-validation-for="Name"></span>
</div>
<input asp-for="Address" placeholder="Address"/>
<div class="stylized-error">
<span asp-validation-for="Address"></span>
</div>
<input type="submit" value="Submit" />
<div class="error-list" asp-validation-summary="ModelOnly"></div>
</div>
</form>您希望Address是可选的,这在默认情况下是true,因此您实际上希望使Name成为必需的:
public class Employee
{
public int ID { get; set; }
[Required]
public string Name { get; set; }
public string Address { get; set; }
}你的控制器:
public async Task<IActionResult> Create(Employee emp)
{
if (ModelState.IsValid)
{
// Do whatever you want here...
}
}如果一个属性包含null是有效的,则它被认为是可选的。如果null不是要分配给属性的有效值,那么它就被认为是必需的属性。
后来
您可以使用数据注释来指示需要属性。
https://stackoverflow.com/questions/45264396
复制相似问题