2012-03-20 3 views
0

私は、.Net MVCを学び、従業員のリストを持っています。ここでは、新しい従業員を作成したり、既存の従業員を編集したりできるビュー "CreateEdit"にリンクしたいと考えています。.net mvc 3:CreateEditビューが動作しない

public ActionResult CreateEdit(int? employeeId) 
{ 
    if (employeeId is Int32) 
    { 
      int id = (Int32)employeeId; 
      Employee e = er.GetById(id); 
      return View(e); 
    } 

    else return View(); 

} 

しかし、社員が、私はをクリックした場合でも、常にnullです:

@model IEnumerable<MvcTest1.Domain.Model.Employee> 

<html> 

<head> 
<title>EmployeeView</title> 
</head> 

<body> 
<p> 
    @Html.ActionLink("New Employee", "CreateEdit") 
</p> 
<table> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.ActionLink("Edit", "CreateEdit", new { id = item.Id }) 
     </td> 
    </tr> 
} 

</table> 
私はリンクを処理するために、私のコントローラのメソッドを持っていますリンク "編集"。

答えて

0

リンクを作成するときに、IDをidとして渡します。 あなたの見解では、idの名前は「employeeId」です。 これらは同じである必要があります。

0

ここでは1/2を実行できます。

@Html.ActionLink("Edit", "CreateEdit", new { id = item.Id }) 

を..and、あなたのアクションメソッドを変更するには、このように見えるように:あるとしてあなたのヘルパーメソッドのコードを保つ

public ActionResult CreateEdit(int id) 
{ 
    // Do what needs to be done 
} 

するか、であるとして、あなたのアクションメソッドを保つ:

public ActionResult CreateEdit(int? employeeId) 
{ 
    // Do what needs to be done 
} 

..ヘルパーのコードを次のように変更してください。

@Html.ActionLink("Edit", "CreateEdit", new { employeeId = item.Id }) 

これは物事を明確にするのに役立ちます。

+0

最初の方法ではエラーが発生します: "パラメータ辞書に、nullable型の 'System.Int32'型のパラメータ 'id'のnullエントリが含まれています。メソッド 'System.Web.Mvc.ActionResult CreateEdit Int32) '"私は" New Employee "リンクを使用します – AGuyCalledGerald

+0

それは動作するはずですが、入力パラメータを自分のコードと同じように変更するだけです。彼らはまったく同じである必要があります。 –

関連する問題