Jestem bardzo nowy w ASP.NET, właśnie rozpocząłem tutorial MVC dzisiaj na asp.net. Mam tu http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-viewJak działa funkcja @ Html.BeginForm()?
tej pory tak dobrze, problem:
moim zdaniem mam następujący kod (Model jest ustawiony na widoku z @model MyFirstMVC4.Models.Movie)
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
@Html.HiddenFor(model => model.ID)
//... bla bla html input
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
Moja MovieController
// Shows the view
public ActionResult Edit(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
//
// POST: /Movie/Edit/5
[HttpPost] // Handles the view above
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
I tu jest pytanie - Jak do cholery to przekazać obiekt filmu metody POST powyżej ?! Kiedy obserwujemy po stronie klienta jest
<form action = "/Movie/Edit/1" ... />
Tutaj nie rozumiem dlaczego action = url tej samej stronie widoku?! 1 także po stronie serwera jest tylko Html.BeginForm() :( Jak to uświadomić, jaka metoda działania odpowiedzieć i co trasa parametry przekazać? to działa, po prostu nie wiem dlaczego
Odtwarzanie z przesłonięciami dla '@ Html.BeginForm' - Dostarczyłem' Html.BeginForm ("Edytuj", "Filmy", FormMethod.Post) '. Zauważ, że nie dostarczyłem trzeciej "id" części trasy. Jednak w wynikowym znaczniku jest: '/ Movies/Edit/4'. Jak to robi? Jeśli suppy 'Html.BeginForm (" Delete "," Movies ", FormMethod.Post)', wynikowy HTML nie ma 'id':'/Movies/Delete'. – mmcrae