使用表单(Html.BeginForm
),我的input
类型为number
。当我这样提交时:
我收到以下错误:
参数字典包含参数的空条目 方法的非可空类型'System.Int32'的'AmountOnHand' 'System.Web.Mvc.ActionResult Ingredient(Int32,System.String,Int32, System.String)'in'BrewReport.Web.Controllers.AdminController'。一个 可选参数必须是引用类型,可空类型或be 声明为可选参数。参数名称:参数
表格(简化)如下:
@using (Html.BeginForm("Ingredient", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input id="AmountOnHand" type="number" class="form-control" min="0" required="required" />
<input type="submit" class="btn btn-primary btn-lg" value="Save Changes to Ingredient" />
}
这是控制器方法:
[HttpPost]
public ActionResult CreateIngredient(string ingredientName, decimal amountOnHand, string measurementUnit)
{
IngredientsData.SaveIngredient(ingredientName, amountOnHand, measurementUnit);
return RedirectToAction("ManageIngredients");
}
答案 0 :(得分:6)
您的输入字段缺少name
属性,因此当它被发回服务器时,没有提供任何值并且您的代码会中断。
您可以使用以下方法之一解决此问题:
将name
属性添加到您的输入字段。
<input id="AmountOnHand" name="AmountOnHand" type="number" class="form-control" min="0" required="required" />
使用Html Helper生成字段标记
@Html.TextBoxFor(x => x.AmountOnHand, new { @type="number", @class="form-control", min="0", required="required" });
这也将为您添加name属性,并且具有强类型的附加好处,以防您以后更改属性名称。