C# 如何填充具有列表的ViewModel<;T>;单击“提交”按钮后的属性mvc 3?
我想使用viewModel创建一周中的一天复选框。视图上的一切都正常,但是,如果单击submit保存更改,httppost方法中的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进行周设置,你会发现它的效果更好,因为它可以为你整理所有的索引 例如(这是
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()) { %>
<div> <%foreach (var item in Model.Settings) {%> <%:Html.CheckBoxFor(q=>item.IsChecked) %> <%:Html.LabelFor(q=>item.IsChecked,item.DisplayName) %> <%:Html.HiddenFor(q=>item.Value) %> <% } %> </div> <br /> <input value="GenerateForWeekly" name="submitButton" type="submit" /> <%} %>
@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" /> }