У меня есть эта ViewModel:
[Key]
public long KlijentID { get; set; }
[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(Resources))]
[StringLength(50, ErrorMessageResourceName = "StringLength50", ErrorMessageResourceType = typeof(Resources))]
public string ImePrezime { get; set; }
[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(Resources))]
[StringLength(50, ErrorMessageResourceName = "StringLength50", ErrorMessageResourceType = typeof(Resources))]
public string Adresa { get; set; }
//Rest of the Class, not important for the question.
В представлении у меня есть:
@using (Html.BeginForm("Edit", "Klijenti"))
{
@Html.HiddenFor(model => model.KlijentID)
<div class="editor-label">
@Html.LabelFor(model => model.ImePrezime)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ImePrezime)
@Html.ValidationMessageFor(model => model.ImePrezime)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Adresa)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Adresa)
@Html.ValidationMessageFor(model => model.Adresa)
</div>
<p><input type="submit" value="Spremi" /><p>
}
Когда я использую его для обновления объекта из базы данных, действие контроллера работает нормально:
if (!ModelState.IsValid) throw new ValidationException();
var k=new Klijent();
Mapper.Map(klijent, k);
repo.SaveKlijent(k);
TempData["msg"] = MyResources.Properties.Resources.SaveDone;
return RedirectToAction("Index", page);
Но когда я пытаюсь добавить новый объект, ModelState.IsValid
не может сказать, что требуется KlijentID.
ErrorMessage:"The KlijentID field is required."
Я проверил, он установлен в 0, как и должно быть для нового объекта. В чем здесь проблема?
UPDATE:
Я пытался добавить это к моему Application_Start
в Global.asax
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
В результате я все еще получаю ошибку проверки, просто теперь она говорит:
ErrorMessage: "A value is required."
Становится немного странно, просто кажется, что это значение очень плохо. Призраки в машине?