2012-05-16 80 views
2

我正在寫我的第一個MVC3應用程序,並且在某個時間點被阻塞。這裏是什麼,我不清楚,混淆同類代碼的行爲?

在Taskscontroller產生的編輯操作是這樣的:

// GET: /Tasks/Edit/5 

public ActionResult Edit(int id) 
{ 
Task task = db.Tasks.Find(id); 
    return View(task); 
} 

和相應的視圖代碼如下:

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

這裏的ID是正確的傳遞給「編輯」操作。

這是我的修改的創建(獲取)方法來接收值從視圖和代碼段的ID是如下,

public ActionResult Create(int i) 
{ 
    ViewData["I"] = i; 
    return View(i); 
} 

和相應的視圖代碼如下,

@Html.ActionLink("c", "Create", "Tasks", new { id = someId }, new { @class = somecssclass}) 

任何幫助表示讚賞。爲什麼在create action id的值爲空?

在此先感謝。

+0

你我在行動和passind ID參數從視圖 – karaxuna

回答

0

嘗試

public ActionResult Create(int id) 
{ 
    ViewData["I"] = i; 
    return View(i); 
} 

默認的模型綁定不找到匹配的recieving參數綁定id或它的一個錯字?此外,如果你想收到的字符串中,還應該張貼字符串

@Html.ActionLink("c", "Create", "Tasks", new { id = someId.ToString() }, new { @class = somecssclass}) 

如果您收到FormCollection你會發現id有像

public ActionResult Create(string i, FormCollection col) 
    { 
     var id = col["id"]; 
     ViewData["I"] = i; 
     return View(i); 
    } 
+0

3nigma:謝謝。是的,String參數是一個錯字,它在我當前的代碼中是int。但使用FormCollection提取id的另一個建議也沒有工作。靜態ID在創建操作中爲空。我覺得@ HTML.ActionLink()重寫有什麼錯誤?有關這個的任何想法。 – KasunLak

+0

@KasunLak只要'create'是你的動作結果的名稱,'tasks'是你的控制器,那麼這個幫助器的語法就沒問題 – Rafay