如何在MVC视图中通过JavaScript从枚举中获取文本

问题描述 投票:0回答:1

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

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

但是,当我通过document.getelementbyid或name执行此操作时,它会显示undefined或value 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);
}

以下是在dropdownlist中绑定枚举项的视图

<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;
}

这两行代码都不起作用。

javascript asp.net-mvc enums
1个回答
0
投票

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

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

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

 $("#availabledocument option:selected").val();
© www.soinside.com 2019 - 2024. All rights reserved.