Asp.net mvc ASP.NETMVC模式
我有一个视图,当模型填充了数据并且模型完全为空时,可以访问该视图 当模型为空时,表示用户单击了“新建” 目前,我得到了一个NullReferenceException,因为模型中显然没有任何内容。如果我将一个对象传递给视图,那么浏览器就会冻结,因为该对象中包含空项 是否有更快/更好的方法来代替:Asp.net mvc ASP.NETMVC模式,asp.net-mvc,Asp.net Mvc,我有一个视图,当模型填充了数据并且模型完全为空时,可以访问该视图 当模型为空时,表示用户单击了“新建” 目前,我得到了一个NullReferenceException,因为模型中显然没有任何内容。如果我将一个对象传递给视图,那么浏览器就会冻结,因为该对象中包含空项 是否有更快/更好的方法来代替: MyObject myObj=新的myObj(); myObj.InnerObj=新对象(){data=..}; … 我希望这是有意义的:)您可以使用以下模式: 创建一个子类MyObject,该子类具有
MyObject myObj=新的myObj();
myObj.InnerObj=新对象(){data=..};
…
我希望这是有意义的:)您可以使用以下模式:
创建一个子类MyObject
,该子类具有预先填充的所有属性和故意不实现任何行为的方法。例如:
public sealed class NullObject : MyObject
{
public object InnerObj { get; private set; }
public NullObject()
{
InnerObj = new Object { ... };
}
}
这可能不是处理它的最聪明的方法,但我有时会在中的视图中包装依赖于模型的代码
@if(Model.Property != null)
因此,如果“创建”和“编辑”只有一个视图,不同之处在于模型中属性的总体,请使用“如果”测试这些属性,然后相应地编写代码
我们最终实现的一个更好的解决方案(我认为)是一个enum
,我们称之为“EditState”
,它有两个值:'create'
和'edit'
。将EditState
设置为viewModel中的属性。设置或检查其值并相应地渲染视图(使用“创建”或“显示”输入,或以您设置的方式)。这是区分创建流和编辑流的一种简单易读的方法