C# 我怎样才能有灵活的局部视图?
在我的C# 我怎样才能有灵活的局部视图?,c#,asp.net-mvc,C#,Asp.net Mvc,在我的CreateOrEdit视图中,我有以下TextBoxFor: @Html.TextBoxFor(model => model.Date.Value.ToShortDateString(), new {@readonly = true, @class = "form-control"}) 当然,我不能这样使用它,因为我得到以下错误: 模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式 所以我改变了我的代码如下: @{ var m
CreateOrEdit
视图中,我有以下TextBoxFor
:
@Html.TextBoxFor(model => model.Date.Value.ToShortDateString(),
new {@readonly = true, @class = "form-control"})
当然,我不能这样使用它,因为我得到以下错误:
模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式
所以我改变了我的代码如下:
@{
var m = Model.Date.Value.ToShortDateString();
@Html.TextBoxFor(model => m, new {@readonly = true, @class = "form-control"})
@Html.ValidationMessageFor(model => model.Date)
}
现在,它不再给我上述错误,它与编辑操作一起工作,因为我已经有一个模型实例,所以下面的行在编辑操作方法中是正确的,但在创建操作方法中不是正确的:
var m = Model.Date.Value.ToShortDateString();
我的问题是当我使用createaction方法时,因为我还没有模型实例,所以我得到了异常。如何解决此问题?您在
Create.cshtml
视图中的NullReferenceException
将由于未向视图传递模型而导致,您应该始终这样做。对于Create()
方法,只需初始化并将模型的新实例传递给GET方法中的视图即可
public ActionResult Create()
{
var model = new yourModel();
return View(model);
}
@Html.TextBoxFor(m=>m.Date,“{0:d}”、new{@readonly=“readonly”、@class=“form control”})
但是为什么不在Create()
方法中将模型的默认实例传递给视图呢?@StephenMuecke ToShortDateString只是一个例子。确切地说,我想在这里使用一个扩展方法。什么扩展方法?您想显示什么(而且您应该在Create()
方法中传递模型的默认实例)