[英]Umbraco Forms PreValue sources issue
我在 Umbraco 表單中使用 prevalue 源來呈現 db 表中的選項列表。 我注意到在 html 標記中,值列被放置在列表值和標簽中,如下所示:
<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 似乎被完全忽略了。 有人遇到過這種情況么? 我做錯了什么還是有其他方法可以檢索所選列表項的鍵列值?
好的,我發現了如何解決這個問題。 意識到標記由 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 填充任何預值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.