Asp.net mvc 3 如何在编辑获取编辑帖子期间从视图中预先列出数据?

Asp.net mvc 3 如何在编辑获取编辑帖子期间从视图中预先列出数据?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有一个进退两难的问题,希望有人能帮我解决。在加载页面之前加载和更新页面的编辑-获取阶段,我存储选中的复选框,如下所示: foreach (var course in courses.Select((x, i) => new { Data = x, Index = i })) { @: <td> <br /><br /><br /> <input type="checkbox" id="chec

我有一个进退两难的问题,希望有人能帮我解决。在加载页面之前加载和更新页面的编辑-获取阶段,我存储选中的复选框,如下所示:

foreach (var course in courses.Select((x, i) => new { Data = x, Index = i }))
{
    @:  <td>
        <br /><br /><br />
        <input type="checkbox" id="checkbox" name="selectedCourses" value="@course.Data.CourseID"
            @(Html.Raw(course.Data.Assigned ? "checked=\"checked\"" : "")) />
        </td>
    bool theNewString = course.Data.Assigned;
    String a = theNewString.ToString();
    assignedCourses.Add(a);
}
@using (Html.BeginForm(new { assigned = assignedCourses }))
[HttpPost]
public ActionResult Edit(int id, List<String> assigned)
在我的控制器中,签名如下所示:

foreach (var course in courses.Select((x, i) => new { Data = x, Index = i }))
{
    @:  <td>
        <br /><br /><br />
        <input type="checkbox" id="checkbox" name="selectedCourses" value="@course.Data.CourseID"
            @(Html.Raw(course.Data.Assigned ? "checked=\"checked\"" : "")) />
        </td>
    bool theNewString = course.Data.Assigned;
    String a = theNewString.ToString();
    assignedCourses.Add(a);
}
@using (Html.BeginForm(new { assigned = assignedCourses }))
[HttpPost]
public ActionResult Edit(int id, List<String> assigned)
[HttpPost]
公共操作结果编辑(int id,指定列表)
列表在get阶段结束时加载,但列表中的数据不会进入编辑POST。我的问题是如何让我在“编辑获取”阶段结束时创建的列表保持不变,以便在我的帖子中使用它


谢谢你的建议。

我会尽量简化。所以你的
课程
模型是这样的

public class Course
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool Assigned { get; set; }
}
…并且您希望在屏幕上显示一些保存的值以进行编辑。因此,从控制器开始,我模拟了一些数据,并将其中一个
赋值
布尔值设置为
true
,以便在页面加载时进行检查

public Controller Courses
{
    public ActionResult Edit(int id)
    {
        var courses = new Course[] {
            new Course() { Id = 1, Name = "maths", Assigned = true },
            new Course() { Id = 2, Name = "english", Assigned = false },
            new Course() { Id = 3, Name = "science", Assigned = false }
        };

        return View(courses);
    }
现在,您的页面应该期望这些课程的集合,因此在页面顶部定义
视图所期望的类型

cshtml

@model IEnumerable<ExampleProject.Domain.Course>
这将呈现以下html:

<label for="1">maths</label>
<input type="checkbox" name="courses" id="1" value="1" checked="checked">

<label for="2">english</label>
<input type="checkbox" name="courses" id="2" value="2">

<label for="3">science</label>
<input type="checkbox" name="courses" id="3" value="3">

希望这能有所帮助。您可以更聪明一点,使用Html帮助程序进行一些更复杂的绑定(例如
Html.CheckBox
Html.CheckBoxFor
),但这应该可以让您继续,并且可以清楚地看到发生了什么。

谢谢,这确实有效。它确实给了我检查过的课程。我希望在列表中获得选中和未选中的数据,以便在控制器中使用这些数据。然而,这确实回答了我的问题。谢谢,没问题。如果您想使用<代码>复选框查找<代码>助手,并且您的收藏中的所有项目都需要<代码>true<代码>或<代码>false
,Darin's可能会帮助您。