10
Cuando la validación falla, ¿cuál debo devolver? Ver(); o Vista (modelo); ?If (ModelState.IsValid == false) devuelve View(); o Vista (modelo) ;?
Noto que ambos funcionan. Es confuso.
EDIT:
public class MoviesController : Controller
{
MoviesEntities db = new MoviesEntities();
//
// GET: /Movies/
public ActionResult Index()
{
var movies = from m in db.Movies
select m;
return View(movies.ToList());
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Movie movie)
{
if (ModelState.IsValid)
{
db.AddToMovies(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View();//View(movie);
}
}
Mi Create.aspx:
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Title) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Title) %>
<%: Html.ValidationMessageFor(model => model.Title) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.ReleaseDate) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.ReleaseDate) %>
<%: Html.ValidationMessageFor(model => model.ReleaseDate) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Genre) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Genre) %>
<%: Html.ValidationMessageFor(model => model.Genre) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Price) %>
<%: Html.ValidationMessageFor(model => model.Price) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
Mi punto de vista es fuertemente tipado. Detrás de la escena, ¿por qué ambos pueden darme el mismo resultado? Estoy confundido. – xport
Tal vez porque, en su opinión, solo está utilizando ayudantes Html que, de forma predeterminada, buscarán primero en la solicitud POST y luego en el modelo al enlazar sus valores. Pero si intenta acceder manualmente a una propiedad del modelo como '<%: Model.FooProp%>', probablemente lanzará una excepción. Entonces, si tiene una vista fuertemente tipada ** siempre ** pase el modelo. –
Html helpers en scaffold generado por VWD no está fuertemente tipado? – xport