Javascript 使用下拉列表选择mvc显示查询中的数据

Javascript 使用下拉列表选择mvc显示查询中的数据,javascript,jquery,asp.net-mvc,entity-framework,Javascript,Jquery,Asp.net Mvc,Entity Framework,我对这个问题的编码部分有点迷茫。我有一个MVC应用程序,我正在尝试填充一个querysWhere子句,作为从下拉列表中选择的值。此外,我正在填充数据库中查询的下拉列表。例如: SELECT db.ID FROM Database db where ID = 1232 相反,我想做这样的事情 SELECT db.ID FROM Database db where ID = "SelectedValue from Dropdownlist" 模型类: public string ID {get;

我对这个问题的编码部分有点迷茫。我有一个MVC应用程序,我正在尝试填充一个querysWhere子句,作为从下拉列表中选择的值。此外,我正在填充数据库中查询的下拉列表。例如:

SELECT db.ID FROM Database db where ID = 1232
相反,我想做这样的事情

SELECT db.ID FROM Database db where ID = "SelectedValue from Dropdownlist"
模型类:

public string ID {get; set;}

public string Summary{get; set;}

public int Estimate {get; set;}

public List<Hello> getIDs()
        {
            var que = (from wre in db.Table
                       select new Hello{
                       ID = wre.ID
                       }).toList();
        }
视图类:

 @Html.DropDownList("ID", ViewBag.Releases as SelectList, "ID", new {@id="rel" })

<table> 
       <th>@Html.DisplayNameFor(model => model.ID)</th>
       <th>@Html.DisplayNameFor(model => model.Summary)</th>
       <th>@Html.DisplayNameFor(model => model.Estimate)</th>
</table>

<script>
 $("#rel").change(function () {
    var selectedId = this.val();
location.href = '@Url.Action("Index", "SampleController", new {selectedId="_selectedId"})'.Replace("_selectedId",selectedId);
            });
</script>
@Html.DropDownList(“ID”,ViewBag.Releases为SelectList,“ID”,new{@ID=“rel”})
@DisplayNameFor(model=>model.ID)
@DisplayNameFor(model=>model.Summary)
@DisplayNameFor(model=>model.Estimate)
$(“#rel”).更改(函数(){
var selectedId=this.val();
location.href='@Url.Action(“Index”,“SampleController”,new{selectedId=“\u selectedId”})”。替换(“\u selectedId”,selectedId);
});
这工作得非常好,但是现在,我对它的编码方面感到迷茫。每次从下拉列表中更改ID时,我都可以看到警报。但是,显示的数据没有变化(我知道我遗漏了很多)。如果有人能帮我,那太好了,谢谢

1)尝试在Linq中添加where子句

where wre.ID == IDParam
2) 将que更改为类的实例,并获取firstOrDefault而不是List

3) 尝试将类的实例作为视图中的模型传递

return View(test);

1-您需要更改Id,如下所示:

$("#rel").change(function () {
              // alert("Changed");
var selectedId =this.value;
        });
2-如果要重新加载页面,则需要将
参数设置为
[HttpGet]
方法:

    public ActionResult Index(int? selectedId) // selectedId
        {
            var que = (from wre in db.View
                       select new Hello
                       {
                           ID = IDParam
                           Summary = wre.Summary,
                           Estimate = wre.Estimate
                       }).toList();

     ViewBag.Releases = new SelectList(test.getIDs(), "", "ID");
var model = test.getStuff();
if(selectedId!=null && selectedId.HasValue)
{
   // do some stuff with your selectedId
   // if working method is test.getStuff(), then maybe you can use like code below:
model = model.Where(x=> x.Id==selectedId);

}
     return View(model);
        }
在你看来:

  $("#rel").change(function () {
                      // alert("Changed");
        var selectedId =this.value;
    location.href = '@Url.Action("Index", "YourController", new {selectedId="_selectedId"})'.Replace("_selectedId",selectedId);
                });
3-如果您不想重新加载页面,则需要使用
Ajax
request,您必须创建一个新方法,通过selectedId获取数据

//你的观点

   $("#rel").change(function () {
                  // alert("Changed");
    var selectedId =this.value;
$.ajax({
  method: "POST",
  url: "'@Url.Action("GetDataBySelectedId","YourController")'",
  data: { selectedId: selectedId }
})
  .done(function( data) {
// Delete your table, and fill table with your data with jquery. 
  });
});
//您的控制器:

[HttpPost]
public JsonResult GetDataBySelectedId(int? selectedId)
{
// Do some stuff for get your data.
var data = yourData.Where(x=> x.Id = selectedId.Value);
return Json(data);
}

当用户从“选择”元素中选择项目时,是否要更改视图中的数据?你还没有分享你的观点!我已经编辑了代码@ShyjuAre您想根据所选选项更新
吗?您可以使用ajax获取表的更新HTML标记(您的操作方法必须返回表的部分视图)。另一个选项是使用querystring中所选的选项值向您的操作方法提交表单,并让您的操作方法返回带有筛选数据的视图结果。@Peter:“string?”对我来说没有任何意义,string是一种引用类型,本身可以为null,为什么要在它后面加上“?”使它可以为空?谢谢你给了我一个很好的回答,不过每次我都这么做:“(string?SelectedID)它向我抛出了一个错误:错误1运算符“==”不能应用于“string”类型的操作数,“string”没有那么大帮助吗?对不起,我不理解这一点。它很有帮助,只是给了我编辑中描述的错误。什么是
Rel\u ID
RelaseId
,你的
测试做什么。getIds()
方法。您的
变量类型是什么
您没有给我们提供足够的信息。我只是想告诉您两种方法来帮助您。如果您可以很明显,我认为我们可以与您一起解决此问题。我现在需要根据所选列表显示数据,我已经解决了该问题
[HttpPost]
public JsonResult GetDataBySelectedId(int? selectedId)
{
// Do some stuff for get your data.
var data = yourData.Where(x=> x.Id = selectedId.Value);
return Json(data);
}