【发布时间】:2023-03-31 17:33:01
【问题描述】:
我是 ASP.NET MVC 的新手,我正在尝试创建一个页面,其中列出了许多项目,并且还包含一个用于创建新项目的小表单。 所以我创建了这个视图模型:
//The view model has the list of items as AllItems and a member variable for creating a new item.
public class IndexViewModel
{
public List<SListItem> AllItems { get; set; }
//SListItem contains ID, Name and price
public SListItem NewItem { get; set; }
}
在我的 razor 文件中,我添加以下行:
@Html.EditorFor(model => model.NewItem.Name, new { htmlAttributes = new { @class = "form-control"} })
在 html 输出中,它创建一个名称设置为“NewItem.Name”而不是“Name”的文本输入
<input name="NewItem.Name" id="NewItem_Name" type="text" value="">
在控制器中,接收通过表单提交的 POST 数据
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "ID,Name,ItemType")] ShoppingListItem item)
{
}
当我运行它时,“item”参数没有被填充,因为表单元素的名称为“NewItem.*”
我该如何克服这个问题?
提前致谢
【问题讨论】:
-
您的操作方法需要一个
ShoppingListItem类型的对象,但您的视图与IndexViewModel绑定。正如@Stephen 所说,您需要将操作方法的输入参数更改为IndedxViewModel
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor