Asp.net mvc 4 通过复选框将模型传递回控制器时返回空
试图掌握如何将以下数据作为模型传回控制器。我希望使用该模型,然后将所有内容添加到数据库中。当我将表单提交回控制器时,模型是空的。是不是因为其他东西都是空的?我是否必须将所有其他内容作为隐藏字段传递回去?在进入控制器之前,我如何在视图中对这些内容进行排序 我的控制器基本上是将一个xml文件反序列化到视图中Asp.net mvc 4 通过复选框将模型传递回控制器时返回空,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,试图掌握如何将以下数据作为模型传回控制器。我希望使用该模型,然后将所有内容添加到数据库中。当我将表单提交回控制器时,模型是空的。是不是因为其他东西都是空的?我是否必须将所有其他内容作为隐藏字段传递回去?在进入控制器之前,我如何在视图中对这些内容进行排序 我的控制器基本上是将一个xml文件反序列化到视图中 <category> <id>1</id> <description>movies</description>
<category>
<id>1</id>
<description>movies</description>
<genre>
<genres>
<id>1</id>
<name>comedy</name>
</genres>
<genres>
<id>2</id>
<name>action</name>
</genres>
<genres>
<id>3</id>
<name>adventure</name>
</genres>
<genres>
<id>4</id>
<name>drama</name>
</genres>
<genres>
<id>5</id>
<name>romance</name>
</genres>
</genres>
</category>
1.
电影
1.
喜剧片
2.
行动
3.
冒险
4.
戏剧
5.
浪漫
视图/窗体如下所示
<form>
<ul>
@for (int x = 0; x < Model.categories[i].genres.Count(); x++)
{
<li>
<label for="@Model.categories[i].genres[x].name">
<input type="checkbox" name="@Model.categories[i].genres[x].name" value="@Model.categories[i].genres[x].id" checked="@Model.categories[i].genres[x].selected" /> @Model.categories[i].genres[x].name
</label>
</li>
}
</ul>
</form>
@对于(int x=0;x
@Model.categories[i].流派[x].名称
}
尝试使用CheckboxFor代替输入标记
至于代码,您没有与复选框关联的ID。您应该如何在控制器中接收它?为所有复选框指定一个固定名称,如GenreIds 然后,在您的操作中,您应该收到一个
string[]genreIds
参数
过帐表单时,genreid作为am数组过帐,因此必须在数组参数中接收
如果由于您有许多类别,并且希望在其自己的类别中接收每组GenReid,因此这不起作用,那么您可以发送表单值的JSON表示,并在服务器端接收和反序列化它。为此:
在razor模板上:
string[]
(或者int
,如果是ti的话),并且该数组将只包含选中的值
最后一个可能性是“手动”处理
请求。但这更难做到。我将其作为值传递回去