MVC编号输入被处理为null

时间:2015-07-02 01:20:22

标签: c# asp.net-mvc

使用表单(Html.BeginForm),我的input类型为number。当我这样提交时:

input type 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");
}

1 个答案:

答案 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属性,并且具有强类型的附加好处,以防您以后更改属性名称。