Create ビューで使用するビューモデルがあります。
ビューモデル
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>
}
この作品は完璧です。しかし今、空き時間 (7 日、24 時間) を取得するには、一連のチェックボックス (7x24) が必要です。ID の配列があります (jquery を使用しているため、定義済みの ID が必要です)。作成ビューで:
@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 で ID 名を変更する必要がある場合、気にしません。R01C01 のような ID を持つことは必須ではありません...jquery の ID のみが html と同じです)