我试图从我的视图中实例化一个对象:
在我的模型中,我有一个名为Listing的实体对象,其中包含一个Property对象:
public class Listing
{
...
public Property ListingProperty { get; set; }
...
}
在我的观点中,我引用了列表模型:
@model Realintory.Models.Listing
...
在此视图中的表单内部,我正在尝试设置"属性"的属性。像这样的对象:
<div class="form-group">
@Html.LabelFor(model => model.ListingProperty.Address, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ListingProperty.Address)
@Html.ValidationMessageFor(model => model.ListingProperty.Address)
</div>
</div>
这会引发空值异常,因为它尚未实例化。我的问题是如何设置它,我知道这一定很容易,但无论我尝试什么,它都不在视图方面工作。
这样的事情很糟糕:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
Property toCreate = new Property();
@Model.ListingProperty = toCreate;
...
}
我意识到这可能是一个新问题,但我似乎无法在任何地方找到答案,所以我不想再浪费时间并想出我会问。
答案 0 :(得分:3)
您的控制器应该提供表示视图所需数据的模型。如果视图需要在模型中填充该属性,则控制器负责执行该操作。视图应该使用模型,而不是构建它。
要在Razor视图中添加任意代码块,您可以执行以下操作:
@{
// ...
}
在这种情况下,也许这样的事情是恰当的:
@if (Model.ListingProperty == null)
{
Model.ListingProperty = new Property();
}