kez*_*kez 5 c# asp.net-mvc razor asp.net-mvc-4
我想创建一个如上所示的表单,
public partial class UserGroup
{
public string UserGroup_ID { get; set; }
public string UserGroupNameEn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
因此填充此用户组并获取我创建的新模型的填充数据(因此它可以应用于查看(第1张图像))
这是控制器类
[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)
{
...........
}
Run Code Online (Sandbox Code Playgroud)
这是第一张图片的模型类
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; }
}
Run Code Online (Sandbox Code Playgroud)
上面视图的视图
@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>
}
Run Code Online (Sandbox Code Playgroud)
但在这里,我遇到了红色波浪线的重大错误
当前上下文中不存在名称"group"
无法将类型'System.Web.Mvc.MultiSelectList'隐式转换为'System.Collections.Generic.List'
小智 4
您不需要 a (这是在和方法MultiSelectList中使用的类)。错误的原因是你的属性只是你试图将 typeof 分配给它。ListBox()ListBoxFor()List<UserGroup> LisGroupsMultiSelectList
将 GET 方法更改为
[HttpGet]
public ActionResult ProductFields_Create()
{
var model = new ProductFields
{
LisGroups = db.UserGroup.ToList();
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
旁注:该属性可以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>
}
Run Code Online (Sandbox Code Playgroud)