C# 如何填充具有列表的ViewModel<;T>;单击“提交”按钮后的属性mvc 3?

C# 如何填充具有列表的ViewModel<;T>;单击“提交”按钮后的属性mvc 3?,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 3,我想使用viewModel创建一周中的一天复选框。视图上的一切都正常,但是,如果单击submit保存更改,httppost方法中的weeklySchedule将为空 为什么weeklySchedulenull?如何将选中的复选框值发送到我的HttPost操作?任何建议都会有帮助 型号: 视图模型: 视图: 当您开始在视图中使用foreach(){}循环时,模型绑定的工作不是很好。如果你使用EditorTemplate进行周设置,你会发现它的效果更好,因为它可以为你整理所有的索引 例如(这是

我想使用viewModel创建一周中的一天复选框。视图上的一切都正常,但是,如果单击submit保存更改,httppost方法中的
weeklySchedule
将为空

为什么
weeklySchedule
null?如何将选中的复选框值发送到我的
HttPost
操作?任何建议都会有帮助

型号:

视图模型:

视图:




当您开始在视图中使用foreach(){}循环时,模型绑定的工作不是很好。如果你使用EditorTemplate进行周设置,你会发现它的效果更好,因为它可以为你整理所有的索引

例如(这是MVC3 Razor视图语法)

(1) 为周设置创建编辑器模板:

@using (Html.BeginForm())
{
    <div>
        @Html.EditorFor(m => m.Settings)
    </div>
    <br />
    <input value="GenerateForWeekly" name="submitButton" type="submit" />
}
(2) 使用EditorFor(无foreach)在视图中渲染:

@使用(Html.BeginForm())
{
@EditorFor(m=>m.Settings)

}
当您开始在视图中使用foreach(){}循环时,模型绑定工作得不是很好。如果你使用EditorTemplate进行周设置,你会发现它的效果更好,因为它可以为你整理所有的索引

例如(这是MVC3 Razor视图语法)

(1) 为周设置创建编辑器模板:

@using (Html.BeginForm())
{
    <div>
        @Html.EditorFor(m => m.Settings)
    </div>
    <br />
    <input value="GenerateForWeekly" name="submitButton" type="submit" />
}
(2) 使用EditorFor(无foreach)在视图中渲染:

@使用(Html.BeginForm())
{
@EditorFor(m=>m.Settings)

}
如果您使用
for
循环而不是
foreach
,那么它应该可以工作。 如图所示:

如果使用
for
循环,而不是
foreach
,则应该可以使用。 如图所示:

但我必须使用asp.net mvc 3:(@programmerist我的代码是针对asp.net mvc3的,唯一的区别是您使用的是ASPX视图引擎而不是Razor视图引擎。原理是一样的。抱歉,但是如何设计编辑器模板我编写的代码与您的链接相同:coding-in.net/asp-net-mvc-3-how-to-use-editortemplates。我看不到任何区别。但我必须这样做使用asp.net mvc 3:(@programmerist我的代码是针对asp.net mvc3的,唯一的区别是您使用的是ASPX视图引擎而不是Razor视图引擎。原理是一样的。抱歉,但是如何设计编辑器模板我编写的代码与您的链接相同:coding-in.net/asp-net-mvc-3-how-to-use-editortemplates。我看不出任何区别。 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyProject.Controllers.ViewModels.Weekly>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> CreateWeekly </asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<% using (Html.BeginForm()) { %>

  &#60;div&#62;
  &#60;%foreach (var item in Model.Settings)
    {%&#62;

        &#60;%:Html.CheckBoxFor(q=&#62;item.IsChecked) %&#62;
        &#60;%:Html.LabelFor(q=&#62;item.IsChecked,item.DisplayName) %&#62;
        &#60;%:Html.HiddenFor(q=&#62;item.Value) %&#62;
   &#60;% } %&#62;

  &#60;/div&#62;
&#60;br /&#62;
   &#60;input value="GenerateForWeekly" name="submitButton" type="submit" /&#62;
      &#60;%} %&#62;
@model Settings.WeeklySetting
@Html.CheckBoxFor(m => m.IsChecked)
@Html.LabelFor(m => m.IsChecked,Model.DisplayName)
@Html.HiddenFor(m => m.DisplayName)
@Html.HiddenFor(m => m.Value)
@using (Html.BeginForm())
{
    <div>
        @Html.EditorFor(m => m.Settings)
    </div>
    <br />
    <input value="GenerateForWeekly" name="submitButton" type="submit" />
}