Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 未在ASP.NET MVC表单上过帐的子记录_Asp.net Mvc_Model View Controller_Post - Fatal编程技术网

Asp.net mvc 未在ASP.NET MVC表单上过帐的子记录

Asp.net mvc 未在ASP.NET MVC表单上过帐的子记录,asp.net-mvc,model-view-controller,post,Asp.net Mvc,Model View Controller,Post,我有两张桌子,作者和书,一个作者可以有很多书。我已经将编辑视图设置为“System.Web.Mvc.ViewPage(MyDatabase.Author的)”。表单设置为显示作者及其所有书籍,并具有编辑书籍信息的能力: <% Using Html.BeginForm()%> <%=Model.author_name%> <br/> <% For Each item In Model.Books%> <%=Html.CheckBox("chec

我有两张桌子,作者和书,一个作者可以有很多书。我已经将编辑视图设置为“System.Web.Mvc.ViewPage(MyDatabase.Author的)”。表单设置为显示作者及其所有书籍,并具有编辑书籍信息的能力:

<% Using Html.BeginForm()%>
<%=Model.author_name%> <br/>
<% For Each item In Model.Books%>
<%=Html.CheckBox("checked_out")%>
<%=item.book_name%> <br/>
<% Next%>
<input type="submit" value="Save" />
<% End Using%>



在控制器中,我有Post函数:

<ActionName("Edit"), AcceptVerbs(HttpVerbs.Post)> _
Function Save(ByVal form As Author) As ActionResult
   Dim book_count = Author.Books.Count
End Function
_
函数保存(ByVal表单作为作者)为ActionResult
Dim book\u count=Author.Books.count
端函数
问题是,即使有几本书被展示,书籍收藏也不属于post-book_计数为零的部分


是我做错了什么,还是我对这个职位期望过高?我怎样才能做到这一点呢?

我相信你的问题是,MVC的“神奇解析器”没有什么值得依赖的。当你在你的页面上放上你想从文章中抓回的、在一个集合中列举的项目时,你必须给你的“东西”起名字。因此,我在我的页面中所做的是,如果我不希望他们能够编辑一个字段,比如上面的书名,我会使用一个隐藏字段将值封装在一个控件中,MVC可以通过magic获得该控件,然后还可以将该值显示给用户。因此,它可能看起来像:

<% for (i = 0; i < Model.Books.Count; i++) {
       book = Model.Books[i] as book //I'm a C# guy so make this VB
<%= Html.CheckBox("author["+1+"].checked_out", book.checked_out) %>
<%= HtmlHidden("author["+i+"].book_name",book.book_name) %>
<%= book.book_name %>
<% } %>

有关此问题的完整答案,请参见。我基本上不知道MVC希望如何命名变量。

我有点困惑。隐藏的值不应该是“books[“+i+”]…”或“author.book[“+i+”]…”之类的吗?另外,我假设第2行开头的“book”应该是“item”。另外,“checked_out”为什么不需要与“book_name”相同的控件命名?