c# - Razor,.Net 核心:可选字段被创建为具有空值的对象
问题描述
我正在使用 razor 和 asp.net core 3.1 创建结帐表单。提交结帐表单后,order
对象也会自动创建。并且该telephone
字段应该是可选的,它也被创建为具有null
如下值的对象(如果用户将输入字段留空并提交表单)。
我的简化模型看起来像这样
public partial class Order
{
public Order()
{
OrderStock = new HashSet<OrderStock>();
}
public int Id { get; set; }
public string Reference { get; set; }
public virtual Address Address { get; set; }
...
public virtual Telephone Telephone { get; set; }
public virtual ICollection<OrderStock> OrderStock { get; set; }
}
我的剃须刀页面如下所示:
<form id="CheckOut" asp-controller="CheckOut" asp-action="CreateOrder" method="post">
<div class="col-md-8 mb-3">
<label asp-for="Address.Street">Street <span>*</span></label>
<input asp-for="Address.Street" type="text" class="form-control mb-3" maxlength="50" />
</div>
...
<div class="col-12 mb-3">
<label asp-for="Telephone.TelephoneNumber">Phone No</label>
<input asp-for="Telephone.TelephoneNumber" type="number" class="form-control" min="0" maxlength="20"/>
</div>
<div class="col-12 mb-4">
<label asp-for="Email.EmailAddress">Email Address <span>*</span></label>
<input asp-for="Email.EmailAddress" type="email" class="form-control" maxlength="30"/>
</div>
所以我必须摆脱这个telephone
正在创建的对象,以使数据库快乐,因为它试图将一个空记录保存到telephone
我的数据库中的表中。我能想到的第一个解决方案是,if
像这样在我的控制器中使用 -statement。
if (string.IsNullOrEmpty(order.Telephone.TelephoneNumber))
{
order.Telephone = null;
}
但这显然不是避免这种情况的最佳解决方案。有没有更好的方法来处理这个?
解决方案
推荐阅读
- oracle - 更新触发器以确保匹配其他表中的值 Oracle SQL Developer
- r - R:如何在奇怪的条件下从 1:10 生成 15 个随机数
- azure-cognitive-search - 在文件内容中搜索亮点
- c# - Saxon 中的 BaseUri 在尝试编译 xslt 内容时导致问题
- excel - 如何使用 pandas.to_excel() 创建 Excel **Table**?
- xamarin - 在 Visual Studio 2019 中升级到 AndroidX 后,在 Xamarin.Android 中的设备上部署时出错
- angular - 如何获取没有时间部分的 javascript 日期对象
- excel - 移动 ”;” 使用 Excel 公式将值分隔到下一行
- mediawiki - 在语义媒体维基中合并#ask 子查询的结果
- php - 显示高级自定义字段的画廊网格视图 Wordpress