如何在c#(cshtml)中使用jQuery变量的值

idfiyjo8  于 2023-03-22  发布在  jQuery
关注(0)|答案(1)|浏览(189)

我有一个jQuery函数,我需要在我的c#代码中得到这个变量的值。函数看起来像这样:

let dropdownList = document.getElementById('betreffDropdown');
dropdownList.onchange = (ev) => {    
  let selectedIndex = dropdownList.value;
}

我想用这个代码片段在我的数据库中搜索:

var templatee = Model.Templates.Distinct().ToList();    
var currentTemplate = templatee.SingleOrDefault(x => x.Item2 == selectedIndex).Item1;

我的下拉列表如下所示:

@if (Model.Templates != null)
{

    foreach (var template in Model.Templates.Distinct())
    {
        <option>@template.Item2</option>
    }
}

我的控制器方法现在看起来像这样:

private readonly TemplatesVM templatesVM;
[HttpGet]
        public IActionResult GetValueOfDropdown(string selectedIndex)
        {

            var templatee = templatesVM.Templates.Distinct().ToList();
            var currentTemplate = templatee.SingleOrDefault(x => x.Item2 == selectedIndex).Item1;

            return Json(currentTemplate);
        }

我如何在代码中使用“selectedIndex”的值?或者有没有一种方法可以直接在c#代码中获得下拉列表的选定值?
我研究并尝试了一些解决方案,从问题看起来类似于我的问题,但没有工作

wkyowqbh

wkyowqbh1#

这里有一个简单的演示如何实现您的目标,希望它可以帮助您解决这个问题。
因为你不提供你的模型设计,所以这里是我的模型在演示:

public class Templates
    {
        public string Item1 { get; set; }
        public string Item2 { get; set; }
    }

为了测试方便,我只是硬编码在这里,在你的演示,你保存数据到db。

List<Templates> templates = new List<Templates> {
            new Templates
            {
                Item1 = "Test1",
                Item2 = "AAA"
            },
            new Templates
            {
                Item1 = "Test2",
                Item2 = "BBB"
            },
            new Templates
            {
                Item1 = "Test3",
                Item2 = "CCC"
            },
            new Templates
            {
                Item1 = "Test4",
                Item2 = "DDD"
            },
            new Templates
            {
                Item1 = "Test5",
                Item2 = "EEE"
            },
            new Templates
            {
                Item1 = "Test6",
                Item2 = "FFF"
            }

        };

前端

@model IEnumerable<Templates>

<form>
    <select id="select">
        @if (Model != null)
        {

            foreach (var template in Model.Distinct())
            {
                <option value="@template.Item2">@template.Item2</option>
            }
        }
    </select>

    <h1 id="result">

    </h1>
</form>

@section Scripts{
    <script>
        $("#select").change(function (){
            var value = $("#select option:selected").val();
            var data = {
                "selectedIndex" : value
            };

            $.ajax({
                type: 'Get',
                url: '/Demo/GetItem1/',
                data: data,
                contentType: "application/json",
                success: function (data) {
                    $("#result").html(data)
                },

            })
        });
    </script>
}

后端

public IActionResult GetItem1(string selectedIndex)
        {
            var currentTemplate = templates.SingleOrDefault(x => x.Item2 == selectedIndex).Item1;
            return Json(currentTemplate);
        }

演示

相关问题