您好我正在尝试在 asp.net MVC 中发布一个表单,但似乎当我单击提交按钮时我的控制器没有被调用。
我认为发生这种情况是因为每个输入的名称没有正确设置,因为我使用的是元组。我尝试使用 HTML 属性设置名称,但它似乎不起作用。
他是我的模特:
public int Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public string Description { get; set;}
public DateTime PublicationDate { get; set; }
public int CategoryId { get; set; }
这是我的控制器:
public ActionResult AddBook()
{
IEnumerable<CategoryModel> categories = categoryContext.GetCategories();
Tuple<BookModel1, IEnumerable<CategoryModel>> model =
new Tuple<BookModel1, IEnumerable<CategoryModel>>(book, categories);
return View(model);
}
[HttpPost]
public ActionResult AddBook(BookModel1 book)
{
bookContext.AddBook(book);
return RedirectToAction("Index", "ProductManager");
}
这是我的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
@Html.LabelFor(x => x.Item1.Name , "Book Name")
@Html.TextBoxFor(x => x.Item1.Name, new { name = "Name" })
@Html.LabelFor(x => x.Item1.Author)
@Html.TextBoxFor(x => x.Item1.Author , new { name = "Author" })
@Html.LabelFor(x => x.Item1.PublicationDate ,"Publication Date")
@Html.TextBoxFor(x => x.Item1.PublicationDate , new { name = "PublicationDate" })
@Html.LabelFor(x => x.Item2 , "Select category")
@Html.DropDownListFor(x => x.Item2, new SelectList(Model.Item2, "Id", "Name"))
@Html.LabelFor(x => x.Item1.Description)
@Html.TextAreaFor(x => x.Item1.Description , new { name = "Description" })
<p>
<input type="submit" value="Create" class="link"/>
@Html.ActionLink("Back to List", "Index", "ProductManager", null,new { @class ="link"})
</p>
</fieldset>
}
即使我尝试使用 HTMLAttributes 设置名称属性,生成的名称仍然看起来像这样:Item1.PublicationDate。我正在使用 ADO.NET 进行数据访问。
我该如何解决这个问题,以便我可以调用AddBook(BookModel1 book)
控制器?