【发布时间】:2017-02-01 22:42:46
【问题描述】:
我正在尝试制作一个动态的网格类型表单,并根据 YoungFF 的数量和 YFFCompetencies 的数量进行更改
左侧会有一个 YoungFF 列表,顶部有一个 YFFCompetencies 列表,可以在网格中的相应框中打勾。
我可以生成 YoungFF 的动态列表,但不知道从哪里开始生成动态列?
视图模型:
public class AddTrainingViewModel
{
public int DrillId { get; set; }
public string DrillDate { get; set; }
public YoungFFDrillTrainingListViewModel[] YoungFFDrillTrainingListViewModels { get; set; }
}
public class YoungFFDrillTrainingListViewModel
{
public int YoungFFId { get; set; }
public string Name { get; set; }
}
控制器:
public ViewResult AddTraining(int drillId)
{
//Find Event
var selectedDrill = db.Drills.FirstOrDefault(t => t.DrillId == drillId);
//YoungFF List
DateTime today = DateTime.Today;
var youngffs = from s in db.YoungFFs
where s.BranchId == selectedDrill.DrillBranchId && s.Left == null
orderby s.LastName
select new
{
FirstName = s.FirstName,
LastName = s.LastName,
YoungFFId = s.YoungFFId,
};
//Comptency List
var competencies = from s in db.YFFCompetencys
where s.Dormant == false
orderby s.YFFCompetencyName
select new
{
YFFCompetencyId = s.YFFCompetencyId,
YFFCompetencyName = s.YFFCompetencyName,
};
AddTrainingViewModel viewModel = new AddTrainingViewModel
{
DrillId = selectedDrill.DrillId,
DrillDate = selectedDrill.DrillDate.ToLongDateString(),
YoungFFDrillTrainingListViewModels =
youngffs.Select(
x => new YoungFFDrillTrainingListViewModel
{
YoungFFId = x.YoungFFId,
Name = x.FirstName + " " + x.LastName,
}).ToArray(),
};
return View(viewModel);
}
查看
@model YFA.ViewModels.AddTrainingViewModel
@{
ViewBag.Title = "Add Training for Drill";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.DrillId)
<h3>Instructors</h3>
<div class="col-md-offset-1">
@for (int i = 0; i < Model.YoungFFDrillTrainingListViewModels.Count(); i++)
{
<div class="form-group">
<div class="row">
@Html.HiddenFor(x => Model.YoungFFDrillTrainingListViewModels[i].YoungFFId)
<div class="col-md-2">
@Html.LabelFor(x => Model.YoungFFDrillTrainingListViewModels[i].Name, Model.YoungFFDrillTrainingListViewModels[i].Name)
</div>
</div>
</div>
}
</div>
<div class="form-group">
<div class="col-md-offset-1 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to Drill List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
【问题讨论】:
-
展示你的模型会有所帮助。您是否希望生成类似于this question 中的图像的表格?
-
@StephenMuecke 我已经添加了视图模型,是的,布局相同
-
您需要类似于我在该问题中的回答的视图模型。在那种情况下,
DayVM代表一个表格单元格(即复选框),WeekVM代表一个表格行(在您的情况下是YFFCompetencies的集合),ScheduleViewModel代表表格(在您的情况下是 @ 987654329@) -
@StephenMuecke 如何动态加载工作日,在我的情况下为 YFFCompetencies?
-
我要签几个小时了,如果你还没弄好,我稍后再补充。
标签: c# asp.net-mvc razor