I'm trying to setup an EditorTemplate for a repeating class (Offer) - however, I'm having trouble getting the EditorTemplate to show. It's as if it just isn't being found in the EditorTemplates folder:
My ViewModel is:
public class CreateViewModel
{
public IList<OfferVM> Offers { get; set; }
public OfferVM Header
{
get
{
return Offers.FirstOrDefault();
}
}
}
public class OfferVM
{
public int RoomTypeId { get; set; }
public int PropertyId { get; set; }
public string RoomTypeName { get; set; }
public string Layout { get; set; }
public decimal RoomRate { get; set; }
public string Inclusions { get; set; }
public string Property { get; set; }
public bool IncludeInOffer { get; set; }
}
My Controller Get code is:
//
// GET: /Offer/Create
public ActionResult Create()
{
var roomtypes = db.RoomTypes.Include(r => r.Property).ToList();
var vm = new CreateViewModel();
vm.Offers = Mapper.Map<IList<RoomType>, IList<OfferVM>>(roomtypes);
return View(vm);
}
The controller works fine - I can see it populated in VS.
My Create.cshtml code is:
@model FGBS.ViewModels.CreateViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.Bootstrap().Begin(new Form().Type(FormType.Horizontal))) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend></legend>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.RoomTypeId)
</th>
<th>
@Html.DisplayNameFor(model => model.PropertyId)
</th>
<th>
@Html.DisplayNameFor(model => model.RoomTypeName)
</th>
<th>
@Html.DisplayNameFor(model => model.Layout)
</th>
<th>
@Html.DisplayNameFor(model => model.RoomRate)
</th>
<th>
@Html.DisplayNameFor(model => model.Inclusions)
</th>
<th>
@Html.DisplayNameFor(model => model.Property)
</th>
<th>
@Html.DisplayNameFor(model => model.IncludeInOffer)
</th>
<th></th>
</tr>
@Html.EditorFor(x => x.Offers)
</table>
Then in my Views/Shared/EditorTemplates folder I have my Offers.cshtml file:
@model FGBS.ViewModels.OfferVM
@{
Layout = null;
}
<tr>
<td>
@Html.EditorFor(model => model.RoomTypeId)
@Html.ValidationMessageFor(model => model.RoomTypeId)
</td>
<td>
@Html.EditorFor(model => model.PropertyId)
@Html.ValidationMessageFor(model => model.PropertyId)
</td>
<td>
@Html.EditorFor(model => model.RoomTypeName)
@Html.ValidationMessageFor(model => model.RoomTypeName)
</td>
<td>
@Html.EditorFor(model => model.Layout)
@Html.ValidationMessageFor(model => model.Layout)
</td>
<td>
@Html.EditorFor(model => model.RoomRate)
@Html.ValidationMessageFor(model => model.RoomRate)
</td>
<td>
@Html.EditorFor(model => model.Inclusions)
@Html.ValidationMessageFor(model => model.Inclusions)
</td>
<td>
@Html.EditorFor(model => model.Property)
@Html.ValidationMessageFor(model => model.Property)
</td>
<td>
@Html.EditorFor(model => model.IncludeInOffer)
@Html.ValidationMessageFor(model => model.IncludeInOffer)
</td>
</tr>

However, when I run the code, I get no error, but my template doesn't display.
I have tried changing the template to just have:
<tr><td>test</td></tr>
But it still doesn't display - which suggests the EditorFor is not "finding" the Offers.cshtml file in the editortemplates folder.
I have also tried adding a breakpoint in Offers.cshtml, but VS doesn't stop within it, implying it isn't being hit.
Is there anything wrong with my setup, or the placement of the Offers.cshtml file?
Thank you,
Mark