我有一个要在创建视图中使用的视图模型:
视图模型
public class ReportViewModel
{
public int ID { get; set; }
[Display(Name = "Platform")]
public string Platform { get; set; }
[Display(Name = "Logo")]
public HttpPostedFileBase Logo { get; set; }
}
创建视图
@model HPRWT.ViewModels.ReportViewModel
@using (Html.BeginForm("Create", "Report", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="editor-label">
@Html.LabelFor(model => model.Platform )
@Html.EditorFor(model => model.Platform )
@Html.ValidationMessageFor(model => model.Platform)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Logo)
<input type="file" id="Logo" name="Logo" />
</div>
}
这部作品完美。但现在我需要一系列复选框(7x24)来获得空闲时间(7 天,24 小时)。我有一个 id 数组(我需要一个已定义的 id,因为我使用 jquery)。在创建视图中:
@for(int i = 1; i < labels.Length; i++)
{
<tr>
<td>@labels[i][0]</td>@for(int j = 1; j < labels[i].Length; j++)
{
<td><div><input type="checkbox" id="@ids[i][j]" /><label for="@ids[i][j]"></label></div></td>
}
我的 id 就像 R02C00 (行的 R + 2 位数的行数 + C(列)+ 列数(2 位数)。我用以下方法生成它们:
for (int i = 1; i < 8; i++)
for (int j = 1; j < 25; j++)
ids[i][j] = "R" + i.ToString("00") + "C" + (j-1).ToString("00");
这也很有效。现在我的问题是如何获得复选框值。
控制器
[HttpPost]
public ActionResult Create(ReportViewModel rvm)
{
if (ModelState.IsValid)
{
rdb.Reports.Add(CreateReport(rvm));
rdb.SaveChanges();
return RedirectToAction("Index");
}
return View(rvm);
}
// Create a report from a reportviewmodel
private Report CreateReport(ReportViewModel rvm)
{
Report report = new Report();
// Platform
string platform = rvm.Platform;
report.Platform = platform ;
// Logo
HttpPostedFileBase inputFile = rvm.InputFile; // Some code to get the path
return report;
}
如何获取复选框值?如果我在reportviewmodel 中添加一个bool [] [],有没有办法做一个@Html.Checkbox?(如果我必须在 jquery 中更改 ids 名称,我不介意,不是必须拥有像 R01C01 这样的 id ......只有 jquery 中的 ids 与 html 相同)