隐藏字段不与文件一起发布

时间:2013-01-04 17:25:37

标签: c# asp.net-mvc-3

我有以下MVC表单和控制器来上传具有给定ID的商品的图像。当此表单由于某种原因提交给控制器时,id为null。我检查了呈现的HTML,并在网页上呈现了正确的ID。

表格:

@using(Html.BeginForm(new{id = ViewBag.id})){

<input type="hidden" name="id" id="id" value="@ViewBag.Id"/>

<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" />
}

控制器:

[HttpPost]
public ActionResult AddImage(int merchandiseId, HttpPostedFileBase image)
<snip>

为什么提交此表单会导致商品ID为空?

3 个答案:

答案 0 :(得分:3)

因为你使用了错误的名字。变化

<input type="hidden" name="id" id="id" value="@ViewBag.Id"/>

<input type="hidden" name="merchandiseId" id="id" value="@ViewBag.Id"/>

public ActionResult AddImage(int merchandiseId, HttpPostedFileBase image)

public ActionResult AddImage(int id, HttpPostedFileBase image)

答案 1 :(得分:1)

merchandiseId将为0(而不是null),因为您的表单上没有名为merchandiseId的输入。

<input type="hidden" name="merchandiseId" id="merchandiseId" value="@ViewBag.Id"/>

答案 2 :(得分:0)

更改Html.BeginForm,如下所示:

@using(Html.BeginForm(new{merchandiseId = ViewBag.id}))

这将解决您的问题。