jquery 为什么选定的选项文本显示空,虽然我分配它在asp.net核心剃刀页?

7bsow1i6  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(80)

我在剃刀页面asp.net核心6上工作。我面临两个属性SelectedOptionValueSelectedOptionText在页面模型上显示为null的问题。
在页面模型I上使用隐藏字段来保留和存储所选文本和所选选项ID的值。

<select id="PrinterName-select" asp-for="SelectedPrinterId" name="selectprinterid" class="form-select" style="margin-left:3px;font-size:15px;font-family: 'Open Sans' , sans-serif;font-weight: bold;">
                        <option value="0">--Select--</option>
                        @foreach (var printer in Model.PrinterList)
                        {

                            <option value="@printer.UserPC">@printer.PrinterName</option>

                        }
                    </select>
<input type="hidden" id="selected-option-text" name="selected-option-text" value="@Model.SelectedOptionText" />
                    <input type="hidden" id="selected-option-value" name="selected-option-value" value="@Model.SelectedOptionValue" />

字符串
在JavaScript上,我做如下:

var selectElement = document.getElementById("PrinterName-select");
        selectElement.addEventListener("change", function () {
            var selectedOption = selectElement.options[selectElement.selectedIndex];
            var selectedText = selectedOption.text;
            var selectedId = selectedOption.id;
            console.log("Selected Text: " + selectedText);
            console.log("Selected ID: " + selectedId);

在页面模型上两个属性显示为空值,请如何解决此问题

public ActionResult OnGetSelectedPrinter(string selectedtext,string selectedvalues)
        {
            string a = SelectedOptionValue;//display as null
            string b = SelectedOptionText;//display as null
        }

ttvkxqim

ttvkxqim1#

从你的问题中,SelectedOptionTextSelectedOptionValue在后端得到null值。这似乎是一个模型绑定问题。在ASP.NET核心中,基于属性名称的模型绑定。在输入标记中:

<input type="hidden" id="selected-option-value" name="selected-option-value" value="@Model.SelectedOptionValue" />

字符串
你把它命名为selected-option-value,它不能匹配后端的属性名,所以当你提交表单时。你会得到空值在后端.
你可以在输入标签中使用asp-for

<input type="hidden" asp-for="@Model.SelectedOptionValue" />


asp-for会根据属性的名称在input标签中自动生成nameid属性,所以html页面中的上述代码会转换为:

<input type="hidden" name="SelectedOptionValue" id="SelectedOptionValue" />


如果此属性有初始值,asp-for也会自动添加value属性。
更多细节可以参考Model Binding in Asp.Net-Core

相关问题