繁体   English   中英

从asp.net mvc中的数据库表填充radiobuttonlist

[英]populate radiobuttonlist from database table in asp.net mvc

在此输入图像描述

我想创建一个如上所示的表单,

还必须填充与UserGroups表一起使用的查看器用户组 在此输入图像描述

public partial class UserGroup
{
    public string UserGroup_ID { get; set; }
    public string UserGroupNameEn { get; set; }
}

因此填充此用户组并获取我创建的新模型的填充数据(因此它可以应用于查看(第1张图像))

我跟着堆栈溢出问题1问题2来做这个

这是控制器类

    [HttpGet]
    public ActionResult ProductFields_Create()
    {
        var model = new ProductFields
        {
            LisGroups = GetUserGroupListEn()
        };

        return View(model);

    }

    public MultiSelectList GetUserGroupListEn()
    {
        return new MultiSelectList(db.UserGroup.ToList(), "UserGroup_ID", "UserGroupNameEn");
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ProductFields_Create(ProductFields product_fields)
    {
      ...........
    }

这是第一张图片的模型类

public class ProductFields
{
    public string ProductFieldID { get; set; }
    public string ProductFieldNameEn { get; set; }
    public string ProductFieldNameAr { get; set; }
    public string ProdcutFieldDiscriptionEn { get; set; }
    public string ProductFieldDiscriptionAr { get; set; }

    public List<UserGroup> LisGroups { get; set; }

    [Required]
    public string SelectedGroupID { get; set; }
}

上面视图的视图

@model Project_Name.Models.ProductFields

@using (Html.BeginForm())
{

    <fieldset>
         <div class="form-horizontal">           

            @Html.ValidationSummary(true, "", new { @class = "text-danger" })

            .....

             <div class="form-group">
             <div>
                 @Html.ValidationMessageFor(x => x.SelectedGroupID)
                 foreach (var group in Model.LisGroups)
                 {
                 <div>
                     @Html.RadioButtonFor(x => x.SelectedGroupID, group.UserGroup_ID, new { id = "emp" + group.UserGroup_ID })
                     @Html.Label("emp" + group.UserGroup_ID, employee.Label)
                 </div>
                 }

             </div>

          </div>

           <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
           </div>


        </div>
    </fieldset>
}

但在这里,我遇到了红色波浪线的重大错误

当前上下文中不存在名称“group”

在此输入图像描述

无法将类型'System.Web.Mvc.MultiSelectList'隐式转换为'System.Collections.Generic.List'

在此输入图像描述

您不需要MultiSelectList (这是在ListBox()ListBoxFor()方法中使用的类)。 错误的原因是您的属性是List<UserGroup> LisGroups但您尝试为其分配类型的MultiSelectList

将您的GET方法更改为

[HttpGet]
public ActionResult ProductFields_Create()
{
    var model = new ProductFields
    {
        LisGroups = db.UserGroup.ToList();
    };
    return View(model);
}

附注:该属性可以是public IEnumerable<UserGroup> LisGroups { get; set; } public IEnumerable<UserGroup> LisGroups { get; set; } public IEnumerable<UserGroup> LisGroups { get; set; } ,然后删除的不必要的使用.ToList()

然后在视图中

@foreach (var group in Model.LisGroups)
{
    <div>
        <label>
            @Html.RadioButtonFor(x => x.SelectedGroupID, group.UserGroup_ID, new { id = "" })
            <span>@group.UserGroupNameEn</span>
        </label>
    </div>
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM