Sehr einfache Situation, hier ist mein Modell:MVC3 Ansicht doesn `t Anzeige leer Formular-Validierung bestanden
public class Comment
{
[Required]
public string Name { get; set; }
[Required]
public string Text { get; set; }
}
Hier mein Controller ist:
public class CommentController : Controller
{
//
// GET: /Comment/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Comment/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{
Comment new_comment = new Comment();
if (TryUpdateModel(new_comment))
{
return View(new Comment()); //problem is there
}
else
{
return View(new_comment);
}
}
}
Und hier ist mein standart genered strongly- typisierte Ansicht:
@model test.Models.Comment
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Comment</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Text)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Problem ist: wenn ich eingeben va Deckel Daten, TryUpdateModel()
kehren true
und
return View(new Comment());
sollten leeres Formular angezeigt werden, weil neue, leere Instanz Kommentar übergeben wird, aber es zeigt immer noch Form mit Werten zuvor eingegeben.
Bitte jemand sagen mir warum. Wie wird es wieder leer angezeigt?
wirklich weiß nicht über Model und ModelState.Clear(). Vielen Dank! – Roman