【问题标题】:Umbraco Forms PreValue sources issueUmbraco Forms PreValue 来源问题
【发布时间】:2020-02-19 11:54:13
【问题描述】:

我在 Umbraco 表单中使用预值源来呈现 db 表中的选项列表。我在 html 标记中注意到 Value Column 被放置在列表值和标签中,如下所示:

<input type="radio" name="3e56b737-c3db-4413-9099-844d002fc3c9" id="3e56b737-c3db-4413-9099-844d002fc3c9_4" value="Secondary">
<label for="3e56b737-c3db-4413-9099-844d002fc3c9_4">Secondary</label>

我希望输入值是键列,标签文本是值列。因此,在呈现列表时,似乎完全忽略了 Key Column。有人遇到过这种情况么?我做错了什么还是有其他方法可以检索所选列表项的键列值?

【问题讨论】:

    标签: umbraco umbraco8 umbraco-contour


    【解决方案1】:

    好的,我找到了解决此问题的方法。意识到标记由 Views\Partials\Forms\Themes\default\Fieldtypes\FieldType.RadioButtonList.cshtml 和 DropDownList.cshtml 中的局部视图控制。

    所以这行写着:

    <input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@pv.Value" 
    

    需要阅读:

    <input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@pv.Id" 
    

    但是:这对于 db 表中的字段值非常有用,但不适用于您指定了硬编码的预值列表的字段。因此,要处理这两种情况,上述行变为:

    var valueId = pv.Id == "0" ? pv.Value : pv.Id;
    <input type="radio" name="@Model.Id" id="@string.Concat(Model.Id,"_",i)" value="@valueId" 
    

    所以如果 Id 为 0,它像以前一样使用字符串值(硬编码的预值 ID 始终为零),否则它使用预值源 Id 字段中的 Id。

    这里需要注意的是,此解决方案假定您没有使用合法 ID 0 填充任何预值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      相关资源
      最近更新 更多