ViewModelでViewに渡されるモデルでMVCに問題があります。私はモデルを作成するためにエンティティフレームワークと呼ばれるいくつかのテーブルを持つデータベースを持っています。Modelを介してMVC Null例外がViewModelで渡されたときにViewに渡されました。 not @Html
これは私のViewModelです:
namespace BP_final.ViewModels
{
public class AllDBModels
{
public Models.Graph AllGraphs { get; set; }
public IEnumerable<NAMTAR_STUDYROOMS> Namtar_studyrooms { get; set; }
public IEnumerable<NAMTAR_STATS_STUDYROOMS> Namtar_stats_studyrooms { get; set; }
public List<bp_data> bp_data { get; set; }
public Models.Report reports { get; set; }
public AllDBModels()
{
Namtar_studyrooms = new List<NAMTAR_STUDYROOMS>();
reports = new Models.Report() { RoomNumber = "1"};
AllGraphs = new Models.Graph();
}
}
}
私は私のテーブルのいくつかのプロパティを作成し、私はそれらのいくつかを初期化します。それはインスタンスを作成する必要がありますので はその後、私のコントローラで私は私のViewModelクラスを呼び出します。私の見解では
public ActionResult Index()
{
AllDBModels allModels = new AllDBModels();
allModels.AllGraphs = new Graph();
allModels.AllGraphs.Charts = new List<Highcharts>();
ChartsModel model = new ChartsModel();
model.Charts = new List<Highcharts>();
...
...
return View(allModels);
私はViewModelにを取得し、その後、私はそれを使用したいです。私はDropDownListForを呼び出す:
@model BP_final.ViewModels.AllDBModels
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
...
...
<div class="form-group">
@Html.LabelFor(model => model.reports.RoomNumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10 ">
@Html.DropDownListFor(model => model.reports.RoomNumber, new SelectList(
/*this fails*/ Model.Namtar_studyrooms.Select(x => new SelectListItem{ Value = x.ID.ToString(), Text = x.NAME }), "Value", "Text", 2
), new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.reports.Graph, "", new { @class = "text-danger" })
</div>
</div>
私はnamtar_studyroomsテーブル/モデルが、できないのデータを使用して、ドロップダウンオプションを移入します。 Model.Namtar_studyrooms.Selectと一緒に使用する次のラムダは@Html(モデルが私のビューモデルである間、model.reportsとして)から取っている最初のlabmda式のために働いています(モデルでnull例外が発生しています。私は、インターネット上で見て、私が皆、すべてを持っていると私は
これを参照してください... http://stackoverflow.com/a/33327821/3777098 – alikuli
「Namtar_studyrooms」が空であるため、表示されているコードは意味を持ちませんが、表示されたコードはそのエラーをスローしませんオプションを表示しません。 'SelectList'コンストラクタで最後のパラメータ(' 2')を追加するのは無意味です(何が選択されたかを決定する 'reports.RoomNumber'の値のため無視されます)。 –