Umbraco: Create CheckBoxList property with prevalues from mvc model

若如初见. 提交于 2019-12-02 10:08:38

Your Facility model should contain a boolean value to indicate if its been selected

public class FacilityVM
{
  public int Id { get; set; }
  public string Description { get; set; }
  public bool IsSelected { get; set; }
{

public class HotelVM
{
  public int ID{ get; set; }
  ....
  public List<FacilityVM> Facilities { get; set; }
}

Controller

public ActionResult Edit(int ID)
{
  HotelVM model = new HotelVM();
  model.Facilities = // populate the list of available facilities
  // Get the hotel from repository and map properties to the view model
  return View(model);
}

public ActionResult Edit(HotelVM model)
{
  ...
  foreach(FacilityVM facility in model.Facilities)
  {
    if (facility.IsSelected)
    {
      // do something
    }
  }
  ....
}

View

@model HotelVM
@using (Html.BeginForm())
{
  // render properties of hotel
  ....
  for (int i = 0; i < Model.Facilities.Count; i++)
  {
    @Html.HiddenFor(m => m.Facilities[i].ID);
    @Html.HiddenFor(m => m.Facilities[i].Description);
    @Html.CheckBoxFor(m => m.Facilities[i].IsSelected)
    @Html.LabelFor(m => m.Facilities[i].IsSelected, Model.Facilities[i].Description)
  }
  <input type="submit" value="Save" />
}

I think you're thinking about this the wrong way as suggested by Stephen (unless I am misunderstanding your question). You are creating a list of key/value pairs and only one will be selected in the BO and so only one will published to the front-end (regardless of the use of it).

So, in the BO you only need a dropdown list with the key/values pairs. You can create this with the "Dropdown list (publishing keys)" datatype. Also consider using the "SQL dropdown" list datatype as this would give you far more flexibility.

If you then need to convert the selected ID into a Facility object, do this separately using a class implementing the IPropertyEditorValueConverter interface. See here for more information:

http://our.umbraco.org/documentation/extending-umbraco/Property-Editors/PropertyEditorValueConverters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!