我创建了一个简单的MVC应用程序,它从表单中获取信息并将其传递给控制器
查看:
@model MvcApplication1.Models.BetChargeModel
@using (Html.BeginForm())
{
<div>
@Html.TextBoxFor(m=>m.numerators[0]) / @Html.TextBoxFor(m=>m.denominators[0])
</div>
<div>
@Html.TextBoxFor(m => m.numerators[1]) / @Html.TextBoxFor(m => m.denominators[1])
</div>
<div>
<input type="submit" value="Calculate" />
</div>
}
控制器:
public ActionResult Index()
{
BetChargeModel model = new BetChargeModel();
model.numerators = new List<double>();
model.denominators = new List<double>();
model.denominators.Add(1);
model.denominators.Add(1);
model.numerators.Add(0);
model.numerators.Add(0);
return View(model);
}
[HttpPost]
public ActionResult Index(BetChargeModel model)
{
double odds1 = model.numerators[0] / model.denominators[0];
double odds = model.numerators[1] / model.denominators[1];
//other code
}
型号:
public class BetChargeModel
{
public List<double> numerators { get; set; }
public List<double> denominators { get; set; }
public double result { get; set; }
}
当我运行此命令并尝试从View中回发信息时,模型将返回空(充满空字段和零)。为什么我的文本框中的数据不能绑定到模型?
(编辑:我已经更改了模型属性并引用了分子,分母和结果,但为了简洁,我们还没有更新这些属性)
答案 0 :(得分:4)
根据名称numerators
和denominators
,您似乎已将列表实施为模型上的字段。
您应use properties instead使模型绑定正常工作(我假设@Raphael已经完成)。
工作模型如下所示:
public class BetChargeModel
{
public List<double> numerators { get; set; }
public List<double> denominators { get; set; }
}
...要遵循命名惯例,请务必将numerators
重命名为Numerators
,将denominators
重命名为Denominators
。
但是,如果这不能解决您的模型绑定问题,请详细说明并发布您的模型实现:)
- 更新
正如您所报告的问题仍然存在,我将根据您自己提供的示例发布我已实现的代码 - 然后您可以进行交叉检查以确保您的计算机上的所有内容都正确 - 下面显示的代码已经过测试和工作:
<强> 型号: 强>
public class BetChargeModel
{
public List<double> numerators { get; set; }
public List<double> denominators { get; set; }
}
<强> 查看: 强>
@model Project.Models.BetChargeModel
@using (Html.BeginForm())
{
<div>
@Html.TextBoxFor(m=>m.numerators[0]) / @Html.TextBoxFor(m=>m.denominators[0])
</div>
<div>
@Html.TextBoxFor(m => m.numerators[1]) / @Html.TextBoxFor(m => m.denominators[1])
</div>
<div>
<input type="submit" value="Calculate" />
</div>
}
<强> 控制器: 强>
public ActionResult Index()
{
var model = new BetChargeModel
{
numerators = new List<double> {0, 0},
denominators = new List<double> {1, 1}
};
return View(model);
}
[HttpPost]
public ActionResult Index(BetChargeModel model)
{
var odds1 = model.numerators[0] / model.denominators[0];
var odds = model.numerators[1] / model.denominators[1];
return null;
}