使用 c# 在 mvc4 中使用 viewbag 数据的下拉列表

Posted

技术标签:

【中文标题】使用 c# 在 mvc4 中使用 viewbag 数据的下拉列表【英文标题】:Dropdownlist using viewbag data in mvc4 using c# 【发布时间】:2013-08-28 13:45:04 【问题描述】:

您好,我想在我的查看页面中填写一个下拉列表,我的代码是

public class MemberBasicData

    public int Id  get; set; 
    public string Mem_NA  get; set; 
    public string Mem_Occ  get; set; 

//控制器

  public ActionResult Register()
    
        var users = new Member().GetAllMembers();
        ViewBag.Users = users;   
        return View();
    

//查看

 @model IEnumerable<....Members.Models.MemberBasicData>
 @html.DropDownListFor(model => model.Mem_Na, (SelectList)ViewBag.Users, "--Select Users--")

我想将 Mem_NA 添加到下拉列表中,Viewbag 包含所有用户详细信息。问题出在查看页面中。 model.Mem_Na 中显示错误。请帮我解决这个问题。

【问题讨论】:

错误是什么? @No One: 可以包含 Mem_NA 的定义 【参考方案1】:

拼写错误?您在视图中拼写 Mem_Na,在模型中拼写 Mem_NA

【讨论】:

【参考方案2】:

请更改您的代码

来自

@model IEnumerable<....Members.Models.MemberBasicData>
@Html.DropDownListFor(model => model.Mem_Na, (SelectList)ViewBag.Users, "--Select Users--")

@model ....Members.Models.MemberBasicData
@Html.DropDownListFor(model => model.Id,new SelectList(ViewBag.Users,"Id","Mem_NA"), "--Select Users--")

它每次都对我有用

【讨论】:

【参考方案3】:

您的模型是MemberBasicDataIEnumerable,而不是MemberBasicData 的实例。这意味着您无法直接访问 MemberBasicData 的属性,因为该属性不存在于 IEnumerable 中。

从你的代码中我能看到的很少,我想你希望你的模型是一个实例,而不是一个列表。

【讨论】:

以上是关于使用 c# 在 mvc4 中使用 viewbag 数据的下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

MVC4.0中ViewBagViewDataTempData和ViewModel几种传值方式的区别

MVC4 不会将模型传递给控制器

如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript

在 MVC4 Twitter Bootstrap C# 中格式化文本框

MVC 4 Razor - 创建动态下拉列表

MVC4.0 扩展辅助方法