2013-07-18 10 views
5

Z żądaniem POST w przypadku, gdy ma on ten sam parametr w ciągu zapytania i w treści żądania, który ma priorytet przy powiązaniu modelu?Wiązanie ASP.NET MVC 3 upewniając się, że wartości formularzy mają priorytet

+1

Jeśli uważasz, że jest to problem i nie możesz zmienić nazw parametrów, możesz zajrzeć do Custom Model Binding: http://www.dotnetcurry.com/ShowArticle.aspx?ID=584 – Mansfield

+0

Dziękuję, mogę to rozważyć, muszę mieć pewność, że otrzymuję wartości z ciała, a nie z ciągu zapytania – axk

Odpowiedz

6

Od this article, w sekcji "Prowizje wartości".

  1. Wcześniej związany parametrów działania, gdy działanie to działanie dziecko
  2. Pola formularzy (Request.Form)
  3. Wartości właściwości w żądaniu ciała JSON (Request.InputStream), ale tylko wtedy, gdy żądanie jest to żądanie AJAX
  4. Route dane (RouteData.Values)
  5. parametry kwerendy (Request.QueryString)
  6. Zamieszczone pliki (Request.Files)

Jeśli więc ta sama nazwa pojawia się w wielu miejscach, ostatnie miejsce, w którym wygląda segregator modelu, będzie miało pierwszeństwo (jak sądzę), w twoim przypadku, w querystringu.

Najprościej zrobić, to wypróbować. Wprowadź adres URL z identyfikatorem & id = 23 "i upewnij się, że masz pole wejściowe HTML o nazwie" id "i POST, które powróciło do kontrolera i sprawdź, który z nich jest przekazywany.

+1

Okazuje się, że pola formularza mają pierwszeństwo. Testowałem z MVC 3 może być inny z innymi wersjami – axk

+1

Ahh fajnie OK, okrzyki za poinformowanie nas, miło :) –

+0

Właśnie to przetestowałem w MVC 5.1. Pola formularza mają pierwszeństwo przed ciągami zapytań adresów URL –