Comprendre les paramètres [HttpPost], [HttpGet] et Complex Actionmethod dans MVC

Je suis très très nouveau pour MVC le dessin-modèle et aussi le Cadre. Je suis également pas très bien versé dans les principes fondamentaux de ASP.NET les Formulaires. Cependant, je comprends les bases du développement web et HTTP Post et GET.

Maintenant, j'ai été en passant par certaines MVC tutoriels et je même si j'ai été d'obtenir un bon maintien de comment MVC le modèle fonctionne et aussi comment le "Moteur de Routage". Puis, soudain, je suis tombé sur un code qui ressemble à folloing:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return Content("Thanks", "text/html");
    }
}

J'ai quelques questions en la regardant:

  • Ma compréhension de moteur de routage est que le contrôle est passé à un particulier ActionMethod basé sur l'URL et normalement l'URL sont fondamentalement Contrôleur/ActionMethod/Id type où le paramètre d'action menthod sont plutôt de type Primitif. Dans cet exemple, au-dessus de ce genre de URL faudrait-il l'appeler "

public ActionResult Index(MyViewModel modèle)?"

Depuis NyViewModel est un type complexe, vous ne pouvez pas passer en tant que partie de l'URL. Comment pouvez-vous l'appeler?

  • Pourquoi est cette deuxième méthode orné [HttpPost] lors de la première méthode n'exige pas de ses attributs? Existe-il des lignes directrices sur l'utilisation [Http] attributs et lorsqu'il n'est pas?

Je pense que je suis absent une grande pice du puzzle et les deux questions sont liées. Cependant, vous avez besoin d'aide pour donner un sens à la relation

source d'informationauteur TeaLeave