仅当 ViewModel 在 MVC 中有价值时显示
Show only if a ViewModel has value in MVC
我有这个 class 和里面的许多属性
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public Universities? UniversityName { get; set;}
public string Summary { get; set; }
*
*
}
查看模型如下所示
public class DetailsViewModels
{
public Course DetailsVMCourse;
public string PageTitle;
*
}
和控制器
public IActionResult CourseDetails(int id)
{
DetailsViewModels detailsViewModels = new DetailsViewModels()
{
//loads the course to the view model from a test database
DetailsVMCourse = _courseRepository.FindCourse(id)
};
return View(detailsViewModels);
}
我只想显示模型 属性 在视图中是否有价值。
目前,我在每个 属性..
的视图页面上执行此操作
@{ if (Model.DetailsVMCourse.Summary != null)
{
<h4>Cource summary</h4>
<p>
@Model.DetailsVMCourse.Summary
</p>
}
}
而不是用 !=null 检查每个 属性,更好和更有效的方法。这是我的第一个项目,因此非常感谢您的帮助。
你可以写一些东西来循环遍历 class 中的每个 属性 使用反射,但我认为你真的不想要那样。这些属性有不同的类型,我相信有一些您可能实际上不想显示(ID?)。有些是其他 classes,它变得复杂(UniversityName 是 object,而不是字符串)。此外,在您的 H4 标签中,"title" 与 属性 不同,它更像是 human-readable。因此,我认为您最好的选择是遵循您当前的模式,并为您真正想要显示的每个 属性 及其 human-readable 标题设置一个块。
我唯一的其他建议是使用 IsNullOrWhiteSpace() 而不是对字符串属性进行空检查。这是一个 cleaner/thorough 检查字符串:
if (!String.IsNullOrWhiteSpace(Model.DetailsVMCourse.Summary))
我会使用反射获取值不等于 null 的属性,然后使用循环显示属性及其值。
var populatedProperties = Model.DetailsVMCourse.GetType().GetProperties().Where(prop => prop.GetValue(Model.DetailsVMCourse) != null);
foreach (var prop in populatedProperties){
<h4>@prop.Name</h4>
<p>
@prop.GetValue(Model.DetailsVMCourse);
</p>
}
我有这个 class 和里面的许多属性
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public Universities? UniversityName { get; set;}
public string Summary { get; set; }
*
*
}
查看模型如下所示
public class DetailsViewModels
{
public Course DetailsVMCourse;
public string PageTitle;
*
}
和控制器
public IActionResult CourseDetails(int id)
{
DetailsViewModels detailsViewModels = new DetailsViewModels()
{
//loads the course to the view model from a test database
DetailsVMCourse = _courseRepository.FindCourse(id)
};
return View(detailsViewModels);
}
我只想显示模型 属性 在视图中是否有价值。 目前,我在每个 属性..
的视图页面上执行此操作@{ if (Model.DetailsVMCourse.Summary != null)
{
<h4>Cource summary</h4>
<p>
@Model.DetailsVMCourse.Summary
</p>
}
}
而不是用 !=null 检查每个 属性,更好和更有效的方法。这是我的第一个项目,因此非常感谢您的帮助。
你可以写一些东西来循环遍历 class 中的每个 属性 使用反射,但我认为你真的不想要那样。这些属性有不同的类型,我相信有一些您可能实际上不想显示(ID?)。有些是其他 classes,它变得复杂(UniversityName 是 object,而不是字符串)。此外,在您的 H4 标签中,"title" 与 属性 不同,它更像是 human-readable。因此,我认为您最好的选择是遵循您当前的模式,并为您真正想要显示的每个 属性 及其 human-readable 标题设置一个块。
我唯一的其他建议是使用 IsNullOrWhiteSpace() 而不是对字符串属性进行空检查。这是一个 cleaner/thorough 检查字符串:
if (!String.IsNullOrWhiteSpace(Model.DetailsVMCourse.Summary))
我会使用反射获取值不等于 null 的属性,然后使用循环显示属性及其值。
var populatedProperties = Model.DetailsVMCourse.GetType().GetProperties().Where(prop => prop.GetValue(Model.DetailsVMCourse) != null);
foreach (var prop in populatedProperties){
<h4>@prop.Name</h4>
<p>
@prop.GetValue(Model.DetailsVMCourse);
</p>
}