我有以下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为空?
答案 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}))
这将解决您的问题。