mam kontrolera z metody działania w następujący sposób:ASP.NET MVC - przekazywania parametrów do kontrolera
public class InventoryController : Controller
{
public ActionResult ViewStockNext(int firstItem)
{
// Do some stuff
}
}
I kiedy uruchomić go otrzymuję komunikat o błędzie informujący:
parametrach słownik nie zawiera poprawnej wartości typu "System.Int32" dla parametru "firstItem". Aby parametr był opcjonalny, jego typ powinien być albo typem referencyjnym, albo typu Nullable.
Miałem to działa w pewnym momencie i postanowiłem wypróbować funkcję bez parametrów. Odkrycie, że kontroler nie był trwały, przywracam ten parametr, teraz odmawia rozpoznania parametru, gdy wywołuję metodę.
używam tej składni url zadzwonić działania:
http://localhost:2316/Inventory/ViewStockNext/11
Jakieś pomysły dlaczego chciałbym uzyskać ten błąd i co muszę zrobić, aby to naprawić?
Próbowałem dodać inną metodę, która pobiera liczbę całkowitą do klasy, ale również nie powiedzie się z tego samego powodu. Próbowałem dodać jeden, który pobiera ciąg, a ciąg jest ustawiony na wartość null. Próbowałem dodać jeden bez parametrów i to działa dobrze, ale oczywiście nie będzie pasować do moich potrzeb.
Lub po prostu zmień nazwę "firstItem" na "id" –
Co więcej, mądrzej byłoby dodać obiekt ograniczeń do MapRoute, na przykład: 'new {firstItem = @" \ d "}'. W ten sposób ** przyjmie ** tylko wtedy, gdy parametr jest jakimkolwiek rodzajem liczby. Możesz modyfikować wyrażenie regularne tak jak lubisz, a nawet ograniczać liczbę miejsc dziesiętnych, tak jak to: 'new {firstItem = @" \ d {4} "}' - teraz może mieć tylko 4 cyfry. Edycja: przykład w pełni zmodyfikowanej MapRoute: http://jsfiddle.net/HJRgT/ – KristianB