C# 如何在HttpPost的模型中保留列表对象?
我有一个包含自定义类型列表的模型 我希望当模型作为C# 如何在HttpPost的模型中保留列表对象?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个包含自定义类型列表的模型 我希望当模型作为HttpPost调用控制器提交时,此类型的数据会传回 然而,它似乎并没有达到我想要的效果。到目前为止,我已经达到了目标,但我遇到了一个问题 我的控制器方法: [HttpPost] public ActionResult UpdateStock(int id, ProductModel model) { return View("UpdateStock", model); } 现在,视图如下所示(修
HttpPost
调用控制器提交时,此类型的数据会传回
然而,它似乎并没有达到我想要的效果。到目前为止,我已经达到了目标,但我遇到了一个问题
我的控制器方法:
[HttpPost]
public ActionResult UpdateStock(int id, ProductModel model)
{
return View("UpdateStock", model);
}
现在,视图如下所示(修剪):
@使用(Html.BeginForm())
{
@Html.HiddenFor(m=>m.ProductNo)
@Html.LabelFor(m=>m.ProductName)
@Html.EditorFor(m=>m.ProductName)
@对于(int i=0;i
我的问题是,@Html.EditorFor()
和
标记似乎彼此不太协调。如果我像上面那样使用它,那么使用@Html
方法的ProductNo
和其他属性将不会传递给模型
非常感谢您的建议。我只想使用编辑器模板: 型号:
public class ProductModel
{
public string ProductNo { get; set; }
public string ProductName { get; set; }
public IEnumerable<Stock> Stocks { get; set; }
}
public class Stock
{
public string Key { get; set; }
public string Value { get; set; }
}
视图:
public class ProductModel
{
public string ProductNo { get; set; }
public string ProductName { get; set; }
public IEnumerable<Stock> Stocks { get; set; }
}
public class Stock
{
public string Key { get; set; }
public string Value { get; set; }
}
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new ProductModel
{
ProductNo = "123",
ProductName = "p name",
Stocks = new[]
{
new Stock { Key = "key1", Value = "value1" },
new Stock { Key = "key2", Value = "value2" },
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(ProductModel model)
{
...
}
}
@model ProductModel
@using (Html.BeginForm())
{
<p>
<input type="submit" value="Save" />
</p>
@Html.HiddenFor(m => m.ProductNo)
<div class = "title">
@Html.LabelFor(m => m.ProductName)
@Html.EditorFor(m => m.ProductName)
</div>
@Html.EditorFor(x => x.Stocks)
}
@model Stock
<div class="editor-field">
@Html.EditorFor(x => x.Key)
</div>
<div class="editor-field">
@Html.EditorFor(x => x.Value)
</div>