2012-05-16 48 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