簡體   English   中英

Umbraco Forms PreValue 來源問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM