dev*_*nkd 10 c# asp.net razor asp.net-mvc-5.1
我无法找到或弄清楚如何获取物品清单(纸杯蛋糕)并在剃须刀中显示数量字段.
发生的事情是我无法获得列表中每个蛋糕数量的值.你能在Razor中做文本框数组吗?
视图
<div class="form-group">
<label>Cupcakes</label>
@foreach (var cupcake in Model.CupcakeList)
{
@Html.TextBox("CupcakeQuantities", cupcake.Id) @cupcake.Name <br/>
}
</div>
Run Code Online (Sandbox Code Playgroud)
模型
public List<Cupcake> CupcakeList { get; set; }
public List<int> CupcakeQuantities { get; set; }
Run Code Online (Sandbox Code Playgroud)
CONTROLLER
public ActionResult Create()
{
var model = new PartyBookingModel()
{
CupcakeList = db.Cupcakes.ToList(),
CupcakeQuantities = new List<int>()
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
CUPCAKE(ENTITY)
public class Cupcake
{
public int Id { get; set; }
public string Name { get; set; }
public decimal PerDozen { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Gon*_*ing 31
您必须使用索引,而不是使用索引foreach
.
@for (int i = 0; i < Model.CupcakeList.Count; i++)
{
@Html.TextBoxFor(x=>Model.CupcakeQuantities[i]) @Model.CupcakeList[i].Name <br/>
}
Run Code Online (Sandbox Code Playgroud)
这将创建顺序命名的+数字条目,这些条目将在回发后重新组合回模型.
我意识到这可能看起来像"为什么不预先工作?",但是foreach
没有足够的反射信息可用TextBoxFor
(因为它只是一个单个对象),而数组索引是通过Model.CupcakeQuantities[i]
表达式的反射提取的.
接收控制器方法应与传递给视图的模型相同:
例如
[HttpPost]
public ActionResult(PartyBookingModel model)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23441 次 |
最近记录: |