2012-03-13 60 views
0

我在试图打开“Ansatte”对象的细节。问题是,在INT参数仅空详情asp.net mvc4

我在控制器

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); 
     } 
    } 

} 

当我点击详细由此看来

@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> 

}

然后,我有这个,该URL看起来正确:http://localhost:50009/HMansatte/Details/1

但是int ansattNr总是“空”

回答

0

...

public ActionResult Details(int? ansattNr) 

,它应该是这样,因为你传递的链接

public ActionResult Details(int? id) 

动态对象的或更改本,而不是...

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

非常感谢你..我刚开始使用MVC,从WebForms世界:) – espenk 2012-03-13 12:00:00

0

它是您创建动作链接的行,您在命名参数“id”但在您的动作方法中,您称它为“ansattNr”。这些名字应该是一样的。由于默认路由已经建立了“身份证”,我只想改变你的操作方法的方法签名是:

public ActionResult Details(int? id) 

这应该解决的问题。你有这样的

0

您将一个名称为id的变量传入控制器(您的global.asax映射到该URL,以便显示像它一样),但你的控制器正在寻找一个名称为ansattNr的变量。

您可在控制器改变变量的名称id或者你可以改变你的行动链接@Html.ActionLink("Details", "Details", new { ansattNr=item.ID_Ansatt })但第二个选项将改变您的网址格式。