2009-06-04 3 views
0

У меня есть следующий маршрутASP.NET MVC Как правильно отобразить параметр в URL-маршрутизации

 routes.MapRoute(
      "Segnalazioni_CercaSegnalazioni", 
      "Segnalazioni/CercaSegnalazioni/{flag}", 
      new { controller = "Segnalazioni", action = "CercaSegnalazioni", flag = 7 } 
     ); 

, переводящий к следующему methon классовой SegnalazioniController:

public ActionResult CercaSegnalazioni(int flag) 
    { 
     ViewData["collezioneSegnalazioni"] = Models.Segnalazioni.Recupera(flag); 
     System.Xml.Linq.XElement x = (System.Xml.Linq.XElement)ViewData["collezioneSegnalazioni"]; 
     return View("Index"); 
    } 

Как приходят ссылка http://localhost:1387/Segnalazioni/CercaSegnalazioni/1 дает мне ошибку

The parameters dictionary contains a null entry for parameter 'flag' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult CercaSegnalazioni(Int32)' in 'RecuperoPagatiMvc.Controllers.SegnalazioniController'. To make a parameter optional its type should be either a reference type or a Nullable type. 
Nome parametro: parameters 
+0

звучит для меня так, как будто вы не бьетесь по этому маршруту. если вы переместите маршрут, указанный в верхней части таблицы маршрутов, это сработает? –

ответ

1

Сообщайте все ваши маршруты. Похоже, ваш URL-адрес обрабатывается другим маршрутом, чем этот. Помните, что порядок, который вы указываете в ваших маршрутах, имеет значение. Поэтому, если у вас есть другой маршрут ДО этого, на который может ссылаться этот URL, он будет.

0

MvcContrib содержит отладчик маршрута. Используйте его, и вы увидите, какой маршрут вызывается для этого URL-адреса. Here есть инструкции по его включению