我创建了以下视图供用户创建新项目。我试图创建一些验证,所以如果用户将字段留空,那么它会生成验证消息。但是,如果用户确实将字段留空,则我的应用程序会在Model.Designer.cs文件中的以下行上崩溃:_headline = structuralObject.SetValidValue(value, false)
。因为:由于验证导致应用程序崩溃 - '此属性不能设置为空值'
此属性不能设置为空值。我Model.Designer.cs文件
部分:
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String headline
{
get
{
return _headline;
}
set
{
OnheadlineChanging(value);
ReportPropertyChanging("headline");
_headline = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("headline");
OnheadlineChanged();
}
}
的代码段适用于作为我创建视图如下:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>News Details</legend>
<br />
Posted Date:
<div class="editor-field">
@Html.EditorFor(model => model.posted)
@Html.ValidationMessageFor(model => model.posted)
</div>
<br />
Headline Title:
<div class="editor-field">
@Html.EditorFor(model => model.headline)
@Html.ValidationMessageFor(model => model.headline)
</div>
<br />
的以下是我的AccountModels.cs文件,其中我输入了对视图的验证:
[MetadataType(typeof(NewsValidation))]
public partial class News
{
}
public class NewsValidation
{
[Required(ErrorMessage = "Posted date is required")]
public DateTime posted { get; set; }
[Required(ErrorMessage = "Headline is required")]
[Display(Name = "Headline")]
public string headline { get; set; }
[Required(ErrorMessage = "Story body is required")]
public string story { get; set; }
}
我被告知这是因为我的数据库允许空值,但是自那时以来,我创建了一个不再允许空值的新数据库。我的应用程序仍然崩溃,不知道从哪里开始。这是奇怪的事情,当它崩溃时,我点击播放继续播放,并出现验证。所以它看起来像验证工作,但由于某种原因应用程序事先崩溃。
任何人都可以提供任何支持?
我对MVC了解不多,但是......不应该让'IsNullable = false'部分引发这个问题吗? – PedroC88 2012-01-13 22:11:33
然后我会尝试自动生成Model.Designer.cs文件。谢谢你看:-) – Blob 2012-01-13 22:13:31