2009-05-18 29 views

Odpowiedz

62

Matt powinny działać prawidłowo. Jeśli nadal przekazując FormMethod.Post, choć trzeba to zrobić tak:

Html.BeginForm("action","controller", new { Id = 12345 }, FormMethod.Post); 

cofania parametry trzeci i czwarty spowoduje Id traktowane jako atrybut zamiast wartości trasy.

+0

Tracę istniejące wartości trasy, gdy używam tej metody. Powiedzmy, że mój adres URL to '/ controller/action? Type = golden', celem formularza (używając swojej drogi) staje się teraz'/controller/action/12345', podczas gdy ja chcę, żeby to był '/ controller/action/12345? Type = golden '. Czy znasz sposób, w jaki mogłem zachować istniejące wartości trasy i dołączyć również własną? –

+1

@Aki Spróbuj dodać 'type' jako ukryte pole w formularzu i powinno zostać wysłane razem. –

+0

Mogę, ale widzisz, że to nie mój problem. Nie jest konieczne, aby w łańcuchu zapytań miałem tylko 'type', mógłbym mieć N parametrów, które mogą się różnić w różnych akcjach. Byłoby prawdziwym bólem przejść do wszystkich tych działań i dodać parametry zapytania jako ukryte pola. –

10

Html.BeginForm("action", "controller", new {Id = 12345})

+1

to nie działa, dodaje atrybut do znacznika formularza. – mrblah

+4

sprawdź nazwę parametru routeValues ​​- upewnij się, że używasz tego nie htmlAttributes. –

7
Html.BeginForm("action", "controller", new { id = ViewBag.FileID }, 
FormMethod.Post, new { id = "feedbackform" }) 

Jak dla kwerendy, ?type=golden, nie wiem jak to zrobić. Oczywiście, querysting to zdobycie i podważa cały cel FormMethod.Post. Chodzi mi o to, że możesz użyć FormMethod.Get, jeśli chcesz dane o kursie, a to może być to, czego szukasz.

Dodatkowo można uniknąć html.beginform i zrobić zapytanie, uzyskać + wysłać, ręcznie za pomocą znacznika formularza.

Po trzecie, jeśli są za pomocą formularza można dokonać ukryte pole:

[input type=hidden name="type" value="golden"] 

Następnie, gdy zostanie naciśnięty przycisk submit wartość jest przekazywana jako zmienna poprawnie formularz.

Powiązane problemy