如何将选定的下拉列表值与 MVC 中的模型属性进行比较

Posted

技术标签:

【中文标题】如何将选定的下拉列表值与 MVC 中的模型属性进行比较【英文标题】:how to compare selected dropdownlist value with a model property in MVC 【发布时间】:2021-10-19 05:45:46 【问题描述】:

在我的 MVC 应用程序中,我有一个与以下模型相关的下拉列表

class MyObjectViewModel

    //comes from WebService, but that doesnt matter here
    List<PersonViewModel> AllPeople= person1,person2, etc 
   // PersonViewModel has properties like Id, Name, NeedToInform

    int SelectedPersonId;


@model MyModels.MyObjectViewModel

@html.DropDownListFor(m=> m.SelectedPersonId, 
      Model.AllPeople.Select(p=>new SelectListItemValue = p.Id, Text=p.Name), new  @class = "form-control", onchange = "process(this.value)" )

如下所示的客户端代码

<script>
 process (val) 
 console.log(val);        
         
</script>

我可以从 PersonViewModel 获取所选值,即 Id,但我需要比较来自 PersonViewModel 的所选人员是否具有属性 NeedToInform 为真。不知道我们如何在 javascript 函数中做到这一点,就在这些行

   <script>
    process (val) 
    console.log(val);
    //Here I need to compare the model like 
    // var doWeneedToInform=@Model.AllPeople.Where(x=>x.Id===val).NeedToInform        
           
</script>

【问题讨论】:

【参考方案1】:

试试这个

<script>

var model = @Html.Raw(Json.Encode(Model));
console.log(JSON.stringify(model));

    process (val) 
    console.log(val);

    let needToInform= null;

model.allPeople.forEach((item) => 
    if (item.Id === val) 
      needToInform = item.NeedToInfom;
     break;
    
);
        
           
</script>

如果模型很大,你可以使用ajax发送请求到一个特殊的api,返回你需要的数据。

【讨论】:

以上是关于如何将选定的下拉列表值与 MVC 中的模型属性进行比较的主要内容,如果未能解决你的问题,请参考以下文章

如何将viewbag值与mvc 4中的模型另一个值进行比较

如何使用jquery从dot net core mvc中的表中的下拉列表中显示选定的值

如何将下拉列表选定的数据传递到另一个表并在 asp.Net MVC 中更新该表

我如何从 mvc 的剑道 ui 网格的下拉列表中获取选定的值

如何在 Asp.net MVC4 中避免回发

AngularJS - 在下拉列表中设置选定值,其中值与另一个对象匹配