Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将类似控件的下拉列表中的字符串值获取到控制器操作中。MVC核心1.x_C#_Jquery_Asp.net_Asp.net Mvc_.net Core - Fatal编程技术网

C# 将类似控件的下拉列表中的字符串值获取到控制器操作中。MVC核心1.x

C# 将类似控件的下拉列表中的字符串值获取到控制器操作中。MVC核心1.x,c#,jquery,asp.net,asp.net-mvc,.net-core,C#,Jquery,Asp.net,Asp.net Mvc,.net Core,我有一个ASP.NET项目。MVC核心带有一系列表。每个字段都有一个名为“年”的字段。在_布局中,我列出了未来5年(2017年、2018年等)的下拉列表。我希望在控制器的每个操作中接收下拉选择的值,以便将过滤器“按年”应用于查询 _LAYOUT.CSHTML页面 2017英孚 2018英孚 2019英孚 EF 2020 //这是我用来设置隐藏字段的Jquery $(函数(){ $(“#EF_DROP”)。关于(“更改”,函数(){ $(“#YEAR”).val($(this.find(“:se

我有一个ASP.NET项目。MVC核心带有一系列表。每个字段都有一个名为“年”的字段。在_布局中,我列出了未来5年(2017年、2018年等)的下拉列表。我希望在控制器的每个操作中接收下拉选择的值,以便将过滤器“按年”应用于查询

_LAYOUT.CSHTML页面


2017英孚
2018英孚
2019英孚
EF 2020
//这是我用来设置隐藏字段的Jquery
$(函数(){
$(“#EF_DROP”)。关于(“更改”,函数(){
$(“#YEAR”).val($(this.find(“:selected”).text().substr(3,4));
});
});
$(函数(){
$(“#YEAR”).val($(“#EF_DROP”).find(“:selected”).text().substr(3,4));
});
每个查看页面


问题出在控制器上:

公共异步任务索引()
{
var applicationDbContext=\u context.MYTABLE.Include(a=>a.RELATE)
其中(x=>x.Year==**??**);
返回视图(等待applicationDbContext.toListSync());
}
我试图添加一个单例,但无法从集合或with Request中找到getValue。。。。
有人能帮我吗?提前感谢。

我已经用以下方法解决了:

\u LAYOUT.CSHTML 使用JQuery

我使用TempData将数据检索到另一个控制器中,因此我可以应用过滤器。。。。不管怎么说,我觉得这并不优雅,但我 不知道如何以新的方式进行。


使用继承,您需要类层次结构中较高级别的year属性,以便在较低级别的类中获得更高的可见性


创建一个“BaseController”(从MVC控制器类继承)类,并在该BaseController中添加“Year”作为公共属性。从基本控制器继承MVC控制器。在BaseController继承的所有控制器中,Porperty“Year”将可用。“年”也可以在Razor视图中访问。

为什么不使用年本身作为值?像
EF2017
在这种模式下我可以简化什么?对不起,这是个初学者的问题!!但我不是专家。这样你甚至不需要使用隐藏字段
YEAR
。只需将
EF\u DROP
重命名为
YEAR
。您也不需要任何jQuery代码。使用继承,您需要在类层次结构的高层中使用year属性,以便它在较低级别的类中更具可见性。创建一个“BaseController”(从MVC控制器类继承)类,并在该BaseController中添加“Year”作为公共属性。从基本控制器继承MVC控制器。在BaseController继承的所有控制器中,Porperty“Year”将可用。“年”也可以在您的Razor视图中访问。谢谢!!我现在就试试!终于,我解决了!感谢达努卡777和安德森·皮门特尔。我把各种信息混在一起了。
 <select name="EF_DROP" id="EF_DROP" class="btn btn-default" style="width:105px;" aria-haspopup="true" aria-expanded="true" type="button">
                                <option value="0">EF 2017</option>
                                <option value="1">EF 2018</option>
                                <option value="2">EF 2019</option>
                                <option value="3">EF 2020</option>
                            </select>
//this is my Jquery to set Hidden Fields
 $(function () {
             $("#EF_DROP").on("change", function () {
                 $("#YEAR").val($(this).find(":selected").text().substr(3, 4));
             });
         });

         $(function () {
             $("#YEAR").val($("#EF_DROP").find(":selected").text().substr(3, 4));
         });
 <input type="hidden" asp-for="YEAR" />
 public async Task<IActionResult> Index()
        {

            var applicationDbContext = _context.MYTABLE.Include(a => a.RELATE)
              .Where(x=>x.Year == **??**);
            return View(await applicationDbContext.ToListAsync());
        }
     $(function () {
             var value = localStorage.getItem("POS");

             if (value != null)
             {
                $("#EF_DROP").val(value).change();
             }
             else
             {
                 $("#EF_DROP").val(0).change();
             }
             $("#Year").val($("#EF_DROP").find(":selected").text().substr(3, 4));

                 $("#EF_DROP").on("change", function () {
                     $("#Year").val($(this).find(":selected").text().substr(3, 4)); //Hidden Field
                     var url = "/Home/SetEF";
                     $.post(url, { item: $(this).find(":selected").text().substr(3, 4) }, function (response) {
                         localStorage.setItem("POS", response);
                     });
                 });
         });

    </script>
 [HttpPost]
        public int SetEF(string item)
        {
            int pos;
            switch (item)
            {
                case "2017":
                    pos = 0;
                    TempData["EF"] = 2017;
                    return pos;

                case "2018":
                    pos = 1;
                    TempData["EF"] = 2018;
                    return pos;

                case "2019":
                    pos = 2;
                    TempData["EF"] = 2019;
                    return pos;

                case "2020":
                    pos = 3;
                    TempData["EF"] = 2020;
                    return pos;

                default:
                    return 0;
            }
 }