Comment @Html.BeginForm() fonctionne?

Je suis très nouveau pour ASP.NET, juste commencé à le MVC tutoriel d'aujourd'hui sur asp.net. Je suis arrivé ici http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

C'est très bien, le problème:

De mon point de Vue j'ai le code suivant
(Le modèle est défini à la vue avec @modèle MyFirstMVC4.Modèles.Film)

@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>
}

Mon 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);
    }

Et voici la question - Comment diable est-il pass le Film de l'objet de la méthode POST ci-dessus?! Quand j'observe le côté client, il est

<form action = "/Movie/Edit/1" ... />

Ici, je ne comprends pas pourquoi action = url de la très même façon de voir la page?!1
Également sur le côté serveur il n'y a que de l'Html.BeginForm() 🙁
Comment elle fait pour se rendre compte à quel méthode d'action de la poste et ce que les paramètres de la route pour passer?
Il fonctionne, je ne sais pas pourquoi