Я использую С#, MVC3, Razor и Zurb Foundation 4.
У меня есть собственный шаблон редактора для логических значений, который будет отображать разные пользовательские интерфейсы для разных устройств ввода. (видимость контролируется классами CSS hide-for/show-for)
Проблема в том, что поскольку все эти элементы пользовательского интерфейса всегда находятся на странице, только значения в первом из них будут привязаны к модели при обратной отправке.
Поэтому мне нужно либо найти способ фактического удаления HTML для скрытых div, либо найти способ использовать истинное значение любого из трех элементов (все они по умолчанию имеют значение false, поэтому тот, который установлен в true, будет видимым)
Это мой Boolean.cshtml:
@model bool
@using System.Web.UI.WebControls
@using Helpers
<div class="hide-for-small">
<div class="hide-for-touch">
<div class="editor-field">
@Html.CheckBoxFor(model => model)
</div>
</div>
</div>
<div class="show-for-small">
<div class="hide-for-touch">
<div class="editor-field">
@{
List<BoolString> ynb = new List<BoolString>();
ynb.Add(new BoolString(false, "No"));
ynb.Add(new BoolString(true, "Yes"));
}
@Html.DropDownListFor(model => model, new SelectList(ynb, "Value", "Description"))
</div>
</div>
</div>
<div class="show-for-touch">
<div class="switch round">
<input id='@ViewData.TemplateInfo.HtmlFieldPrefix + ".Off"' name='@ViewData.TemplateInfo.HtmlFieldPrefix' type='radio' checked />
<label for='@ViewData.TemplateInfo.HtmlFieldPrefix + ".Off"' onclick=''>Off</label>
<input id='@ViewData.TemplateInfo.HtmlFieldPrefix + ".On"' name='@ViewData.TemplateInfo.HtmlFieldPrefix' type='radio' />
<label for='@ViewData.TemplateInfo.HtmlFieldPrefix + ".On"' onclick=''>On</label>
</div>
</div>
В настоящее время флажок работает нормально, а раскрывающийся список - нет. (Я всегда получаю false для свойства моей модели к тому времени, когда я возвращаюсь к контроллеру). Если я перемещаю раскрывающийся список перед флажком, раскрывающийся список работает, а флажок - нет.
Обратите внимание, что я еще не уверен насчет сенсорного элемента, поэтому он все равно может быть неправильным. Я не беспокоюсь о том, чтобы заставить это работать, пока я не разобрался с этой проблемой.