Cra*_*aig 0 c# oop asp.net-mvc-3
我有一节课:
public class TaskDiplayModel
{
public int taskId { get; set; }
[DisplayName("Task Description")]
public string description { get; set; }
[DisplayName("Priority")]
public string priority { get; set; }
[DisplayName("State")]
public string state { get; set; }
[DisplayName("Due By")]
public DateTime deadline { get; set; }
[DisplayName("Created By")]
public PersonObject created_by { get; set; }
[DisplayName("Assigned To")]
public PersonObject assigned_to { get; set; }
[DisplayName("Category")]
public string category { get; set; }
[DisplayName("Sub Category")]
public string subCategory { get; set; }
[DisplayName("Created")]
public DateTime createdDate { get; set; }
[DisplayName("Updated")]
public DateTime lastUpdatedDate { get; set; }
[DisplayName("Updated By")]
public PersonObject lastUpdatedBy { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有另一个继承自这个类的类:
public class TaskModifyModel : TaskDiplayModel
{
public int priorityId { get; set; }
public int stateId { get; set; }
public int categoryId { get; set; }
public int subCategoryId { get; set; }
public SelectList states { get; private set; }
public SelectList priorities { get; private set; }
public SelectList categories { get; private set; }
public SelectList subCategories { get; private set; }
public TaskModifyModel()
{
SetupReferenceData(0);
}
public TaskModifyModel(int taskId)
{
var taskService = new TaskService();
var task = taskService.GetTask(taskId);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我创建了一个TaskModifyModel对象.但是,基类的字符串字段是null.我希望它们已经被创造出来了String.Empty.但是当我尝试访问它们时,我会遇到异常.我错过了什么吗?
顺便说一下,这些是MVC3模型....而且我认为这些类的代码与问题无关.
在.NET中,字符串的默认值null不是String.Empty,因此,除非您专门设置属性的值String.Empty,否则它们将保留null.
假设您希望字符串属性默认为空字符串而不是null,通常可以通过在构造函数中设置它们来执行此操作:
public void TaskDiplayModel()
{
description = String.Empty;
priority = String.Empty;
state = String.Empty;
}
Run Code Online (Sandbox Code Playgroud)
或者使用字段支持的属性而不是auto属性,并设置支持字段:
private string _description = String.Empty;
[DisplayName("Task Description")]
public string description
{
get { return _description; }
set { _description = value; }
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我通常使用第一个选项,在构造函数中执行它,因为代码较少.