EventsというモデルクラスとEventRangeというモデルクラスがあります。
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<EventRange> RangesCollection { get; set; }
}
public class EventRange
{
public int Id { get; set; }
public string RangeName { get; set; }
public string RangeDescription { get; set; }
public int Capacitiy { get; set; }
}
ご覧のとおり、Eventクラスには、ユーザーが多くのEventRangeを追加できる数のEventRangeのリストが含まれています。
イベントと呼ばれるビューを作成しました。これは、偶数範囲の部分ビューを動的に追加します。たとえば、ユーザーは、5つのイベント範囲を保存したい場合は、[イベント範囲の追加]ボタンを5回押すことができます。
イベントビュー:
@using (Ajax.BeginForm("CreateEvent", "Events", new AjaxOptions { HttpMethod = "POST" }, new { @class = "mainForm" }))
{
@*Event data:*@
@Html.LabelFor(m => m.Name)@Html.TextBoxFor(m => m.Name)
@Html.LabelFor(m => m.Description)@Html.TextBoxFor(m => m.Description)
@*EventRange data:*@
<div id="EventRangediv">
@Html.EditorFor(m => m.RangesCollection)
</div>
}
イベント範囲の部分ビューは「〜/ views / events / EditorTemplates/EventRange.cshtml」に保存されます
EventRange.cshtml:
@model fanaticksMain.Models.EventRange
@Html.HiddenFor(m => m.Id)
@Html.DisplayFor(m => m.RangeName)
@Html.LabelFor(m => m.RangeName)@Html.TextBoxFor(m => m.RangeName)
@Html.LabelFor(m => m.RangeDescription)@Html.TextBoxFor(m => m.RangeDescription)
ただし、イベントビューをロードしても、部分ビューの要素、イベント作業の名前と説明のラベルとテキストボックスはロードされません。ただし、eventrangeの部分ビューには何も表示されません。
誰かが私が間違っていることを誰かが知っていますか?また、これがフォームを投稿するためにコレクションをバインドする正しい方法であるかどうか、誰かが何か提案がありますか?