混淆同类代码的行为?

时间:2012-05-16 15:42:48

标签: asp.net-mvc-3 actionlink

我正在编写我的第一个MVC3应用程序而且我在某些方面受到了限制。这是我不清楚的,

在Taskscontroller中,生成的Edit操作如下所示:

// 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已正确传递给“编辑”操作。

这是我修改create(Get)方法以从视图中接收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值为null?

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试

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

默认模型绑定器找不到用于绑定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);
    }