首页 > 解决方案 > 如何在 MVC 视图中通过 JavaScript 从枚举中获取文本

问题描述

创建枚举类并从该枚举列表绑定 MVC 视图中的下拉列表。

现在,每当我从下拉列表中选择枚举列表时,我都想要 JavaScript 中的文本并存储在变量中。

但是,当我通过document.getelementbyidname执行此操作时,它会显示undefinedvalue null

那么,您能回答我如何通过 JavaScript 获取枚举名称并将其存储在变量中吗?

这是我的代码,

枚举类

namespace Nop.Core.Domain.FreeLancer
{
    public enum DocumentList
    {
        ElectricityBill = 0,
        RentAgreement = 1,
        Logo = 2,
        PanCard = 3,
        AadharCard = 4,
        BankCancelCheque = 5,
        OldItReturnFile = 6,
        InterestCertyOfFD = 7,
        AgricultureBill = 8,
        ShortTermCapitalGainProfitLossAmount = 9
    }
}

这是控制器

public virtual IActionResult Edit()
{   
    var model = customer.ToModel();

    // AddDocumentListViaEnum
    var documentList = Enum.GetValues(typeof(DocumentList)).Cast<DocumentList>();
    foreach (var document in documentList)
        model.AddCustomerDocumentModel.AvailableDocuments.Add(new SelectListItem { Text = document.ToString(), Value = ((int)document).ToString() });

    return View(model);
}

这是绑定下拉列表中的枚举项的视图

<select id="availabledocument" name="availabledocument"
    class="form-control"
    asp-items="@Model.AddCustomerDocumentModel.AvailableDocuments" onchange="OtherDocument(this.value);">
    <option value="">Select</option>
</select>

现在,到目前为止一切都很好。现在我想从 JavaScript 中获取名称并存储在变量中。

这是该视图代码,

function OtherDocument(documentValue) {
    var storeValue = document.getElementById("availabledocument").value;
    var storeValue1 = document.getElementByName("availabledocument").value;
}

这两行代码都不起作用。

标签: javascriptasp.net-mvcenums

解决方案


正如克里斯评论的那样,值已经传递到函数中,所以不需要再次抓取它,如果你想通过选择器抓取值,你可以编写以下代码

function OtherDocument() {
     var elm= document.getElementById("availabledocument");      
     var selectedValue = elm.options[elm.selectedIndex].value;    
}

如果您使用 jQuery,那么您可以编写以下代码:

 $("#availabledocument option:selected").val();

推荐阅读