我正在使用 c#、MVC3、Razor 和 Zurb Foundation 4。
我有一个用于布尔值的自定义编辑器模板,它将为不同的输入设备显示不同的 UI。(可见性由 Foundation 的 hide-for / show-for css 类控制)
问题在于,因为所有这些 UI 元素始终在页面上,所以只有第一个中的值会在回发时绑定到模型。
所以我要么需要找到一种实际删除隐藏 div 的 HTML 的方法,要么找到一种从三个元素中的任何一个中使用 true 值的方法(它们都默认为 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>
目前该复选框工作正常,但下拉菜单没有。(当我回到控制器时,我的模型属性总是错误的)。如果我在复选框之前移动下拉 div,则下拉菜单有效,但复选框无效。
请注意,我还不确定触摸元素,所以无论如何它可能是错误的。在我解决这个问题之前,我不会为让它工作而烦恼。