2012-03-13 3 views
0

Я пытаюсь открыть детали объекта Ansatte. Проблема заключается в том, что параметр Int только нульПодробности asp.net mvc4

У меня есть этот вид

@model IEnumerable<EL4.Administrasjon.Models.Ansatte> 
<table> 
@foreach (var item in Model) { 
<tr data-pkey="@item.IdBaksystem">   
    <td> 
     @Html.DisplayFor(modelItem => item.AnsNavn) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.ePostAdresse) 
    </td>   

    <td class="rowControl hidden"> 
     @Html.ActionLink("Details", "Details", new { id=item.ID_Ansatt }) |     
    </td> 
</tr> 

}

Тогда у меня есть это в контроллере

public class HMAnsatteController : Controller 
{ 
    // 
    // GET: /HMAnsatte/ 

    public ActionResult Index() 
    { 
     HM_000_EL4Entities hmEnt = new HM_000_EL4Entities(); 

     List<Ansatte> HMansatte = hmEnt.Ansatte.ToList(); 

     return View(HMansatte); 
    } 

    public ActionResult Details(int? ansattNr) 
    { 
     if (ansattNr == null) 
     { 
      return null; 
     } 
     else 
     { 
      Entities ent = new Entities(); 

      Ansatt el4Ansatt = ent.Ansatt.Where(a => a.AnsattNr == ansattNr).First(); 

      return View(el4Ansatt); 
     } 
    } 

} 

Когда я нажимаю детали, URL выглядит правильно: http://localhost:50009/HMansatte/Details/1

Но int ansattNr всегда «null»

ответ

0

у вас есть это ...

public ActionResult Details(int? ansattNr) 

, и это должно быть это из-за динамического объекта, который вы передаете в ссылке

public ActionResult Details(int? id) 

или изменить это вместо того, чтобы ...

@Html.ActionLink("Details", "Details", new { ansattNr=item.ID_Ansatt }) 
+0

Большое спасибо .. Я только начал использовать MVC, исходя из мира WebForms :) – espenk

0

Это строка, в которой вы создаете свою ссылку действия, вы называете параметр «id», но в своем методе действий вы называете это «ansattNr». Эти имена должны быть одинаковыми. Поскольку маршрутизация по умолчанию уже установлен на «ID», я бы просто изменить метод подписи вашего метода действия к этому:

public ActionResult Details(int? id) 

Это должно решить проблему.

0

Передача переменной с именем id в контроллер (который ваш global.asax отобразил на URL-адрес, чтобы он показывал как это делает), но ваш контроллер ищет переменную с именем ansattNr.

Вы можете либо изменить имя переменной в своем контроллере на id, либо вы можете изменить свою ссылку действия на @Html.ActionLink("Details", "Details", new { ansattNr=item.ID_Ansatt }), но второй вариант изменит форматирование вашего URL-адреса.