在 MVC 中只传递选定的值?
Passing only selected values in MVC?
我有一个 MVC 应用程序,我想在其中将零个或多个项目类型分配给特定文件。我正在渲染一个页面,其中每个文件都有一行,每个项目类型都有一个带有复选框的列。像这样:
文件1 |翻译 ☐ |编辑 ☐
文件2 |翻译 ☐ |编辑 ☐
为了呈现这个,我创建了一个包含单个文件和项目类型列表的 ViewModel:
public class FileProject
{
public File ProjectFile = new File();
public List<ProjectType> ProjectTypes = new List<ProjectType>();
}
然后我将这些列表传递给我的视图:
@model List<MyVerbalInk.ViewModels.FileProject>
@using (Html.BeginForm("Assign", "Order")) {
@foreach (var f in @Model)
{
<tr>
<td>
@f.ProjectFile.FileName
</td>
<td>
@for(int i = 0; i < @f.ProjectTypes.Count; i++)
{
<label class="checkbox-inline">
@Html.CheckBox("projectTypeId", new { value = @f.ProjectTypes[i].ProjectTypeId }) @f.ProjectTypes[i].Name
</label>
}
</td>
</tr>
}
}
当这篇文章发布时,我想获得 FileProject 对象的列表,其中 ProjectTypes 仅包含已检查的对象:
[HttpPost]
public ActionResult Assign(List<FileProject> fileProjects)
{
//Do stuff
return View();
}
但是fileProjects
参数总是空的。如何传回仅包含已检查的 ProjectTypes
的 FileProject 对象集合?
你能测试一下用它来改变你的 BeginForm 吗:
@using (Html.BeginForm("Assign", "Order", FormMethod.Post))
编辑:另一个问题完全相同的问题:MVC4 Complex Type Model is null after post
我有一个 MVC 应用程序,我想在其中将零个或多个项目类型分配给特定文件。我正在渲染一个页面,其中每个文件都有一行,每个项目类型都有一个带有复选框的列。像这样:
文件1 |翻译 ☐ |编辑 ☐
文件2 |翻译 ☐ |编辑 ☐
为了呈现这个,我创建了一个包含单个文件和项目类型列表的 ViewModel:
public class FileProject
{
public File ProjectFile = new File();
public List<ProjectType> ProjectTypes = new List<ProjectType>();
}
然后我将这些列表传递给我的视图:
@model List<MyVerbalInk.ViewModels.FileProject>
@using (Html.BeginForm("Assign", "Order")) {
@foreach (var f in @Model)
{
<tr>
<td>
@f.ProjectFile.FileName
</td>
<td>
@for(int i = 0; i < @f.ProjectTypes.Count; i++)
{
<label class="checkbox-inline">
@Html.CheckBox("projectTypeId", new { value = @f.ProjectTypes[i].ProjectTypeId }) @f.ProjectTypes[i].Name
</label>
}
</td>
</tr>
}
}
当这篇文章发布时,我想获得 FileProject 对象的列表,其中 ProjectTypes 仅包含已检查的对象:
[HttpPost]
public ActionResult Assign(List<FileProject> fileProjects)
{
//Do stuff
return View();
}
但是fileProjects
参数总是空的。如何传回仅包含已检查的 ProjectTypes
的 FileProject 对象集合?
你能测试一下用它来改变你的 BeginForm 吗:
@using (Html.BeginForm("Assign", "Order", FormMethod.Post))
编辑:另一个问题完全相同的问题:MVC4 Complex Type Model is null after post