asp.net Core Razor CRUD - 不会接受 Phone 的任何有效输入
asp.net Core Razor CRUD - wont accept any input for Phone as valid
我正在使用 Razor 页面和内置的 CRUD 页面构建应用程序。我使用 SQL Express 进行了代码优先设置,在我的位置 table 中,我有一个名为 'Phone' 的可为空的 int col。我的位置 Class 非常简单
[Column("Phone")]
public Nullable<int> Phone { get; set; }
我的上下文 class 也很简单
public DbSet<Location> Location { get; set; }
我自动生成的 CRUD 编辑页面看起来像
<input asp-for="Location.City" class="form-control" />
<span asp-validation-for="Location.City" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.State" class="control-label"></label>
<input asp-for="Location.State" class="form-control" />
<span asp-validation-for="Location.State" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.Zip" class="control-label"></label>
<input asp-for="Location.Zip" class="form-control" />
<span asp-validation-for="Location.Zip" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.Phone" data-val="false" class="control-label"></label>
<input asp-for="Location.Phone" data-val="false" class="form-control" />
<span asp-validation-for="Location.Phone" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
我没有看到我告诉 VS 这是一种 Phone 格式,除了 phone 数字外,其他所有内容都会保存。当我将任何内容放入 5554443333 或其他内容时,我得到:“值‘5554443333’对 Phone 无效。”来自 asp-验证。如果我将 phone 字段留空,其他所有内容都会正确保存。稍后我将放入一个小正则表达式来处理破折号、括号和空格。我只需要帮助找到如何关闭或淡化该字段的验证。
提前致谢。
因为int类型的范围是-2,147,483,648 to 2,147,483,647
,而你的输入已经超出了这个范围,所以建议你使用string
或者long
类型。
[Column("Phone")]
public string? Phone { get; set; }
将 phone 属性 更改为字符串并尝试使用正则表达式进行验证:
[Column("Phone")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid phone number")]
public string Phone { get; set; }
我正在使用 Razor 页面和内置的 CRUD 页面构建应用程序。我使用 SQL Express 进行了代码优先设置,在我的位置 table 中,我有一个名为 'Phone' 的可为空的 int col。我的位置 Class 非常简单
[Column("Phone")]
public Nullable<int> Phone { get; set; }
我的上下文 class 也很简单
public DbSet<Location> Location { get; set; }
我自动生成的 CRUD 编辑页面看起来像
<input asp-for="Location.City" class="form-control" />
<span asp-validation-for="Location.City" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.State" class="control-label"></label>
<input asp-for="Location.State" class="form-control" />
<span asp-validation-for="Location.State" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.Zip" class="control-label"></label>
<input asp-for="Location.Zip" class="form-control" />
<span asp-validation-for="Location.Zip" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Location.Phone" data-val="false" class="control-label"></label>
<input asp-for="Location.Phone" data-val="false" class="form-control" />
<span asp-validation-for="Location.Phone" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
我没有看到我告诉 VS 这是一种 Phone 格式,除了 phone 数字外,其他所有内容都会保存。当我将任何内容放入 5554443333 或其他内容时,我得到:“值‘5554443333’对 Phone 无效。”来自 asp-验证。如果我将 phone 字段留空,其他所有内容都会正确保存。稍后我将放入一个小正则表达式来处理破折号、括号和空格。我只需要帮助找到如何关闭或淡化该字段的验证。
提前致谢。
因为int类型的范围是-2,147,483,648 to 2,147,483,647
,而你的输入已经超出了这个范围,所以建议你使用string
或者long
类型。
[Column("Phone")]
public string? Phone { get; set; }
将 phone 属性 更改为字符串并尝试使用正则表达式进行验证:
[Column("Phone")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid phone number")]
public string Phone { get; set; }