ビューの入力フィールドの検証を印刷する際に問題が発生しました。
ユーザーにフォームに入力してもらいたいビューがあります。このフォームでは、ユーザーが先に進む前に入力を検証する必要があります。私の dbModel では、コードを検証する方法についてさまざまなルールを設定しました。ビューで、Html.Validationssummary(true) を使用してエラー メッセージを表示しようとしました
以前のプロジェクトでは問題なく動作しました。しかし、これではありません...
これがDbModelクラスです
public class Kjop
{
[Key]
public int ordreid { get; set; }
public int kundeid { get; set; }
public int produktid { get; set; }
public DateTime tid { get; set; }
[Required(ErrorMessage = "Fornavn må oppgis")]
[StringLength(50, ErrorMessage = "Maks 50 bokstaver")]
[DisplayName("Fornavn")]
public string fornavn { get; set; }
[Required(ErrorMessage = "Etternavn må oppgis")]
[StringLength(50, ErrorMessage = "Maks 50 bokstaver")]
[DisplayName("Etternavn")]
public string etternavn { get; set; }
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9]+)*\\.([a-z]{2,4})$", ErrorMessage = "Ugylding formatering på epost")]
[Required(ErrorMessage = "feil i epost")]
[StringLength(50, ErrorMessage = "Maks 50 bokstaver")]
[DisplayName("Epost")]
public string epost { get; set; }
[Required(ErrorMessage = "Telefon må oppgis")]
[RegularExpression(@"[0-9]{8}", ErrorMessage = "8 tegn i telefonnr")]
[DisplayName("Telefon")]
public string telefon { get; set; }
[Required(ErrorMessage = "Adresse må oppgis")]
[StringLength(50, ErrorMessage = "Maks 50 bokstaver")]
[DisplayName("Adresse")]
public string adresse { get; set; }
[Required(ErrorMessage = "Postnr må oppgis")]
[RegularExpression(@"[0-9]{4}")]
[DisplayName("Postnummer")]
public string postnr { get; set; }
[Required(ErrorMessage = "Poststed må oppgis")]
[DisplayName("Poststed")]
public string poststed { get; set; }
public bool betalt { get; set; }
public int antall { get; set; }
}
変数名はノルウェー語ですが、気にしないでください。コードはどの言語でも同じです:)
私のコントローラー
public ActionResult Registrering()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Registrering(FormCollection innKunde)
{
try
{
using (var dbB = new databaseContext())
{
using (var dbP = new produktContext())
{
var produktId = from d in dbP.Produkter
where d.ProduktNavn.Equals(GlobalVariables.valgtProdukt)
select d;
int produktid = 0;
foreach (var b in produktId)
{
produktid = b.ProduktID;
}
var nyttKjop = new Kjop()
{
kundeid = 0,
produktid = produktid,
fornavn = innKunde["Fornavn"],
etternavn = innKunde["Etternavn"],
antall = Convert.ToInt32(GlobalVariables.produktAntall),
tid = DateTime.Now,
epost = innKunde["Epost"],
telefon = innKunde["Telefon"],
adresse = innKunde["Adresse"],
postnr = innKunde["Postnr"],
poststed = innKunde["Poststed"],
};
dbB.Kjoper.Add(nyttKjop);
dbB.SaveChanges();
Response.Write("Data lagt inn");
Session["Nykunde"] = nyttKjop;
//Adde sessions på variabler til kvitteringsiden
return RedirectToAction("Kredittkort");
}
}
}
catch (Exception feil)
{
Response.Write(feil);
return View();
}
}
そして、ビュー
@model Nettbutikk_v1.Models.Kjop
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Registrering</title>
</head>
<body>
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Kjop</legend>
<div class="editor-label">
@Html.LabelFor(model => model.fornavn)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.fornavn)
@Html.ValidationMessageFor(model => model.fornavn)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.etternavn)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.etternavn)
@Html.ValidationMessageFor(model => model.etternavn)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.epost)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.epost)
@Html.ValidationMessageFor(model => model.epost)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.telefon)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.telefon)
@Html.ValidationMessageFor(model => model.telefon)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.adresse)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.adresse)
@Html.ValidationMessageFor(model => model.adresse)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.postnr)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.postnr)
@Html.ValidationMessageFor(model => model.postnr)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.poststed)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.poststed)
@Html.ValidationMessageFor(model => model.poststed)
</div>
<p>
<input type="submit" value="Registrer" />
</p>
</fieldset>
}
</body>
</html>
何かを解析しようとすると、次の例外が発生します...
System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
誰かが私が間違っていることを理解するのを手伝ってくれますか?