我已经尝试过了,而且行得通,但是没有更干净的方法吗? Razor页面代码段位于下面,ViewModel类位于下面。我不确定还能提供什么。
@if (Model.Courses.Instructor != null)
{
<div class="col-sm-10">
@Html.DisplayFor(model => model.Courses.Instructor)
</div>
}
else
{
<div class="col-sm-10">
--
</div>
}
namespace OESAC.Models
{
public class CoursesVM
{
public Int64 OESACID { get; set; }
public String CourseTitle { get; set; }
public String Instructor { get; set; }
public String Locations { get; set; }
以防万一我可能不知道我在说什么是允许数据注释的类
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace OESAC.Data
{
//[Table("Courses")]
public class Courses
{
[Key]
public Int64 OESACID { get; set; }
[MaxLength(120)]
public String CourseTitle { get; set; }
[MaxLength(50)]
public String Instructor { get; set; }
[MaxLength(50)]
public String Locations { get; set; }
答案 0 :(得分:1)
您的方法没有错。这是在Razor页面中检查null的一种方法。另一种选择是null coalescing operator ??
。如果可以为null的类型没有值,可以使用它来提供默认值:
<span>@(item.NullableValue ?? "Default value")</span>
然后是null-conditional operator ?
,例如,您可以使用它来防止可为空的对象调用的方法引发异常,如果调用该方法的项为null :
<span>@item.NullableValue?.ToString()</span>
答案 1 :(得分:0)
嘘!发现这在我的Razor Page代码后面的控制器中也有效。我采用了Mike Brind的上述答案,并将其添加到控制器中的字段中(注意“ ??和值,如果为null)。简单易用。也适用于null检查。但是,等等!还有更多!向下滚动到代码下方:
public async Task OnGetAsync(String CEUType, Boolean Approved)
{
Courses = await _context.Courses
.Select(p => new CoursesVM
{
OESACID = p.OESACID,
CourseTitle =p.CourseTitle ?? "",
Instructor = p.Instructor,
Locations = p.Locations,
Dates = p.Dates ?? "",
CEUDWP = p.CEUDWP,
CEUDEQ = p.CEUDEQ,
CEUonsiteInstall = p.CEUonsiteInstall,
CEUonsiteOandM = p.CEUonsiteOandM,
MaxCEU = p.MaxCEU ?? "",
我在页面加载时出现空错误的原因是我去了,但是在Courses.cs文件(模型)中进行了一些DataAnnotation和ComponentModel验证。这行要求的验证仅在运行时引发空错误:
[Required(ErrorMessage = "A Course Title is required")]
这是错误:
InvalidOperationException: The data is NULL at ordinal 1. This method can't be called on NULL values. Check using IsDBNull before calling.
当然,每个人对Googling的答复都是做Null To String转换。但是在哪里?
嗯,我的示例显示了以下位置:“ CourseTitle = p.CourseTitle ??”“,” 这种优雅的短手需要很少的文字。 因此,我可以放入DataValidation,并使用上述速记。 有趣的是,新的/编辑验证如何在记录显示时引发错误。