ビューにを渡そうとしSelectListItem
ています。このチェックボックスリストは、日付範囲のあるJavaScriptダイアログボックスのビュー内で表示できます。
次のコードから、メソッドReadLogFile
は正しいを返しますSelectListItem
。このメソッドは、コントローラーのアクションメソッドから呼び出します。私のエンティティにRunDatesDisplay
は、IEnumerable
リストと呼ばれるプロパティが含まれています。System.Web.Mvc
このプロパティを選択リストアイテムとして作成することもできますが、ドメインプロジェクトで名前空間を参照したくありませんか?
問題は、選択リスト項目をエンティティ内のリストにキャストIEnumerable
してビューに渡すことができないことです。リストビューモデルを作成しました。ビュー内でエディターテンプレートを呼び出してチェックボックスをレンダリングします。
選択リスト項目をビューに正しく渡すためのヘルプが必要です。たとえば、をSelectListItem
使用してモデルプロパティにを渡す必要がありますか、それとも最初にselectlistitemをselectlistにバインドする必要がありますか?ViewBag
ViewBag.RunDatesDisplay = items(selectlistitem)
実在物:
public class RunLogEntry
{
public int ID { get; set; }
public int RunID { get; set; }
[NotMapped]
public bool? LoadFileAttached { get; set; }
[NotMapped]
public bool? OutFileAttached { get; set; }
[NotMapped]
public string AttachedLoadListFileName { get; set; }
[NotMapped]
public string AttachedOutputFileName { get; set; }
[NotMapped]
public List<RunLogEntryTestExceptionDisplay> TestExceptionDisplay { get; set; }
[NotMapped]
public IEnumerable<RunLogEntryDatesDisplay> RunDatesDisplay { get; set; }
}
いくつかの処理を行い、selectlistitemを返すメソッド:
public static List<SelectListItem> ReadLogFile(List<string> fileNames)
{
//Get collection of files and send to parser file by file:
LogFile lf = new LogFile();
var items = new List<SelectListItem>();
foreach (var minDate in minDates)
{
var item = new SelectListItem() { Value = minDate.ToString(), Text = String.Format("{0} - {1}", minDate, minDate.AddMinutes(30)) };
items.Add(item);
}
return items;
}
コントローラアクション(アクションのコード全体を含めませんでした)
//3. Send log file name collection to parser
if (logFiles != null && logFiles.Count > 0)
{
var items = new List<SelectListItem>();
items = FileImport.ReadLogFile(logFiles);
**RunLogEntry.RunDatesDisplay = FileImport.ReadLogFile(logFiles);**
ViewModel:
public class RunLogRunDatesViewModel
{
public IEnumerable<SelectListItem> RunLogRunDates { get; set; }
}
エディターテンプレート
@model RunLog.Domain.Entities.RunDatesDisplay
<tr>
<td>
@Html.DisplayFor(x => x.RunDate)
</td>
</tr>
そして最後に私の見解:
<div id="runDatestreeview" title="Dialog Title" style="font-size: 10px; font-weight: normal;
overflow: scroll; width: 800px; height: 450px; display: none;">
<table class="grid" style="width: 600px; margin: 3px 3px 3px 3px;">
<thead>
<tr>
<th>
Run Dates:
</th>
</tr>
</thead>
<tbody>
@if (Model.RunDatesDisplay != null)
{
@Html.EditorFor(x => x.RunDatesDisplay)
}
</tbody>
</table>
</div>