Cyb*_*cop 4 asp.net-mvc nullable view asp.net-mvc-4
从我的控制器我已经通过值模块来查看
public ActionResult Details(long id, string owner)
{
var module = _ownedModuleRepository.GetModuleDetails(id, owner);
return View(module);
}
Run Code Online (Sandbox Code Playgroud)
我已经在视图中显示了它包含的值如下
<dt>ID</dt>
<dd>@Model.Id</dd>
<dt>Module ID</dt>
<dd>@Model.ModuleId</dd>
<dt>Owner</dt>
<dd>@Model.Owner</dd>
<dt>Module Type</dt>
<dd>@Model.TypeName</dd>
<dt>Module Kind</dt>
<dd>@Model.KindName</dd>
<dt>Ownership Start Date</dt>
<dd>@Model.Start</dd>
<dt>Ownership End Date</dt>
<dd>@Model.End</dd>
@foreach (var properties in Model.Properties)
{
<dt>Property Name</dt>
<dd>@properties.Name</dd>
<dt>Property Value</dt>
<dd>@properties.Value</dd>
}
Run Code Online (Sandbox Code Playgroud)
目前@ Model.End为null,它是DateTime类型,我在viewmodel中将其设置为可为空.因为它是null,所以我正在看到它

如您所见,所有权结束日期的值是从下面获取属性名称的值.如果@ Model.End为null,如何将其设置为空?
编辑1:
我的模特
public class OwnedModuleDetails
{
public long Id { get; set; }
public string ModuleId { get; set; }
public string Owner { get; set; }
public string KindName { get; set; }
public string TypeName { get; set; }
public DateTime Start { get; set; }
public DateTime? End { get; set; }
public IEnumerable<Property> Properties { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
来自存储库的方法
public OwnedModuleDetails GetModuleDetails(long id, string owner)
{
// ReSharper disable ImplicitlyCapturedClosure
var module = (_dbSis.OwnedModules.Where(t => t.Id == id).Select(m => new OwnedModuleDetails
// ReSharper restore ImplicitlyCapturedClosure
{
Id = id,
ModuleId = m.ModuleId,
TypeName = m.ModuleType.TypeName,
KindName = m.ModuleType.ModuleKind.KindName,
Owner = owner,
Start = m.Start,
End = m.End,
Properties = m.PropertyConfiguration.PropertyInstances.Select(
x => new Property { Name = x.Property.Name, Value = x.Value })
}));
return (module.FirstOrDefault());
}
Run Code Online (Sandbox Code Playgroud)
尝试添加空格:
<dt>Ownership End Date</dt>
<dd>
@if (Model.End != null)
{
@Model.End
}
else
{
@:
}
</dd>
Run Code Online (Sandbox Code Playgroud)
当用户在日期列中插入空值时,我曾经遇到过这个问题。
这导致了这个错误:
System.InvalidOperationException: Nullable object must have a value
要解决此问题,而不是仅DisplayFor在视图中使用以下代码,因此如果列值为空,它将显示日期为空
<td>
@(item.Startdate.HasValue ? item.Startdate.Value.ToString("dd/MM/yyyy") : "Date is Empty")
</td>
Run Code Online (Sandbox Code Playgroud)
希望能帮助某人。
| 归档时间: |
|
| 查看次数: |
11223 次 |
| 最近记录: |