【问题标题】:How to get another value from the selected dropdownlist如何从选定的下拉列表中获取另一个值
【发布时间】:2021-11-27 12:35:39
【问题描述】:

我有项目的课程

public class Project
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

然后,它使用下拉列表显示

@Html.DropDownListFor(model => model.Id,
    new SelectList(Model.Projects, "Id", "Name", Model.Id),
    "-- Select --",
    new { @class = "form-control" })

如果我选择了一个项目,我可以得到Id和Name,但是如何得到描述呢?

<script>
    $(function () {
        $('#id').change(function () {
            alert('id = ' + $('#Id').val() + ', name = ' + $('#Id :selected').text() + ', description = ' + ???);
        });
    });
</script>

【问题讨论】:

  • 我还会在选择列表项上生成某种 -data-` 属性,因此在您设置@class 的位置以某种方式为-data-description 创建一个新属性,然后将其拉出从那里在您的警报中。我认为DropDownListFor 应该接受字典以及匿名对象类型。所以这样我想你可以传入data-description 的名称,因为new { data-description = "" } is not valid c#
  • 我尝试使用data属性,比如@Html.DropDownListFor(model =&gt; model.Id, new SelectList(Model.Projects, "Id", "Name", Model.Id), "-- Select --", new { @class = "form-control", @data_description = ? }),但是我不知道如何设置data_description,你能把示例代码发给我吗?
  • 对不起,我不能给出一个完整的答案,有一段时间没有使用 MVC。我想如果我没记错的话,你需要遍历Model.Projects 并创建new SelectListItem 而不是使用new SelectList( 方法。如果您可以遍历每个选择列表项,也许您可​​以正确设置描述。
  • 哦,我明白了,感谢您的洞察力

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

有两种方法

  1. 如果项目列表非常大,您将不得不创建 API 并使用 ajax 来获取描述。

  2. 在 javascript 中从模型中获取项目列表并找到描述

<script>

var projects = @Html.Raw(Json.Encode(Model.Projects));
console.log(JSON.stringify(projects)); //only for test
 
$(function () {

        $('#id').change(function () {
 
    let id= $('#Id').val();
    let description = null;
     let name = null;
   
projects.forEach((item) => {
    if (item.Id === id) {
      name= item.Name;
      description= item.Description;
     break;
    }
});
    alert('id = ' + id + ', name = ' + name + ', description = ' + description);
        });
        
  }         
</script>

【讨论】:

  • 这个也可以,谢谢
  • 不客气
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
相关资源
最近更新 更多