Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能有灵活的局部视图?_C#_Asp.net Mvc - Fatal编程技术网

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()
方法中传递模型的默认实例)