Asp .Net MVC中的枚举的HTML帮助器

izulaa5

我有两个模型类:

  1. Employee.cs
    public class Employee
    {
        public int Id { get; set; } 
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public ProjectType Project { get; set; }
    }
  1. ProjectType.cs

    public enum ProjectType
    {
        Project1,
        Project2,
        Project3,
        Project4
    }

在的Create视图中Employee,我希望显示可以检查其中几个项目的项目。

我已经在“创建”视图中创建了一个foreach循环Html.RadioButtonFor

@model App.Data.Models.Employee
@using App.Data.Models;
    
@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
}

<div class="form-horizontal">

<div class="form-group">
   @Html.LabelFor(model => model.Project, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @foreach (var project in Enum.GetValues(typeof(ProjectType)))
        {
        <div class="col-md-10">

            @Html.RadioButtonFor(m => m.Project, project)
            @Html.Label(project.ToString())
        </div>
                }
        </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>



如果我能够选择多个选项,那将很好用。我假设在这种情况下,我应该使用Html.CheckBoxFor创建foreach循环,而我试图按照此说明进行操作-> http://findnerd.com/list/view/How-to-bind-checkbox-with -MVC / 25707中的-enum-values /

但这并没有真正起作用:我没有在ProjectType.cs中添加任何内容。我在Employee.cs中添加了一个类

 public class Employee
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public List<EnumModel> CheckBoxProjectType { get; set; }
    }
    public class EnumModel
    {
        public ProjectType ProjectType { get; set; }
        public bool isSelected { get; set; }
    }

当我在EmployeeController中创建循环时-CheckBoxProjectType用红色下划线表示:

  public ActionResult Create()
        {
            ProjectType model = new ProjectType();
            model.CheckBoxProjectType = new List<EnumModel>();
            foreach (ProjectType projectType in Enum.GetValues(typeof(ProjectType)))
            {
                model.CheckBoxProjectType.Add(new EnumModel() { ProjectType = projectType, isSelected = false });
            }
            return View();
        }

在创建视图中,我试图从之前发布的链接中复制循环

@model App.Data.Models.Employee
@using App.Data.Models;
    
@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
}

<div class="form-horizontal">
    
       <div class="form-group">
      
            <div class="col-md-10">
                @for (int i = 0; i < Model.CheckBoxProjectType.Count; i++)
                {
                    @Html.DisplayFor(m => m.CheckBoxProjectType[i].ProjectType);
                    @Html.CheckBoxFor(m => m.CheckBoxProjectType[i].isSelected);
                    @Html.HiddenFor(m => m.CheckBoxProjectType[i].ProjectType);
                }


                @Html.ValidationMessageFor(model => model.ProjectType, "", new { @class = "text-danger" })

        

            </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>


有人可以指导我如何为枚举创建foreach循环吗?

谢尔盖

我已经看到错误了-未定义和分配“ i”。你怎么编译这个?

 @Html.LabelFor(m => m.CheckBoxProjectType[i].ProjectType);

用户只需“ Projects”即可。

而且我在您的create视图和acton中也看不到任何@model。

public ActionResult Create()
        {
            ProjectType model = new ProjectType();
              //Where is your ProjectType class?
             // and why I see an Employee AS a model in your view?
......
           
       //you have to change your return to this

            return View(model);
        }

最好创建一个像这样的特殊viewModel用作模型(将其放在单独的文件中):

public class EmployeeViewModel
{
        public Employee Employee{ get; set; }
        public List<EnumModel> EnumModels{ get; set; }
 }

您的员工将是:

public class Employee
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public List<ProjectType > ProjectTypes { get; set; }
    }

您的新创建操作将如下所示:

public ActionResult Create()
        {
            var model = new EmployeeViewModel{
                Employee=new Employee, 
                EnumModels=new List<EnumModel>()
               };
           
            foreach (var projectType in Enum.GetValues(typeof(ProjectType)))
            {
                model.EnumModels.Add(new EnumModel { ProjectType = projectType, 
                isSelected = false });
            }
            return View(model);
        }

在您的创建视图中,用EmployeeModel替换Employee(我认为您也必须添加一些Employee输入控件):


@using App.Data.Models
@model EmployeeViewModel
    
@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
}

<div class="form-horizontal">
    
       <div class="form-group">
      <h5> Projects </h5>
            <div class="col-md-10">

                @for (int i = 0; i < Model.EnumModels.Count; i++)
                {
                    @Html.DisplayFor(m => m.EnumModels[i].ProjectType);
                    @Html.CheckBoxFor(m => m.EnumModels[i].isSelected);
                    @Html.HiddenFor(m => m.EnumModels[i].ProjectType);
                }


                @Html.ValidationMessageFor(model => model.EnumModels, "", new {  
        class = "text-danger" })

            </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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带HTML帮助器的Asp.net MVC下拉列表

来自分类Dev

如何在Asp.Net MVC中创建自定义HTML帮助器

来自分类Dev

如何在Asp.Net MVC中创建自定义HTML帮助器

来自分类Dev

有没有办法在ASP.NET MVC Razor html帮助器中的大括号内隐藏html?

来自分类Dev

检查ASP.NET MVC 4 HTML帮助器生成的HTML标记

来自分类Dev

ASP.NET MVC帮助器,独立于MVC版本

来自分类Dev

ASP.NET MVC @ Html.LabelFor(model => model.Name)帮助器

来自分类Dev

ASP.NET MVC-在自定义HTML帮助器中使用模型

来自分类Dev

ASP.NET Core MVC之前的应用程序中的Razor标签帮助器

来自分类Dev

如何在不使用ASP.Net MVC html帮助器的情况下绑定html控件?

来自分类Dev

ASP.NET MVC 5中的授权帮助

来自分类Dev

在ASP.NET MVC中需要帮助Chart.js

来自分类Dev

用枚举填充ASP.NET MVC中的SelectList

来自分类Dev

如何从ASP.NET MVC中的枚举创建下拉列表?

来自分类Dev

枚举ASP.NET MVC中以表单顺序发布的数据

来自分类Dev

用枚举填充ASP.NET MVC中的SelectList

来自分类Dev

ASP.NET MVC帮助器,为模型的两个属性创建帮助器

来自分类Dev

ASP.NET Core中的IHttpActionResult和帮助器方法

来自分类Dev

Knockout-Kendo库是否设计为与Kendo UI ASP.NET MVC html帮助器一起使用?

来自分类Dev

Asp.net MVC 5无法在类库项目内的Razor视图中使用Html帮助器

来自分类Dev

ASP.NET MVC中的HTML编码

来自分类Dev

网址路由帮助Asp.net Mvc

来自分类Dev

在asp.net 5 MVC6中,标记帮助器和Route属性之间的奇怪行为

来自分类Dev

如何在ASP.NET MVC控制器中编写HTML代码

来自分类Dev

带包装的自定义TextBox Asp.net MVC帮助器

来自分类Dev

带有ASP.NET MVC 6锚标记帮助器的QueryString

来自分类Dev

<$ G + $>在ASP.NET MVC5帮助器中出现奇怪的字符

来自分类Dev

ASP.NET MVC:使用递归帮助器生成多级菜单

来自分类Dev

与ASP.NET MVC中的ASP.NET等效

Related 相关文章

  1. 1

    带HTML帮助器的Asp.net MVC下拉列表

  2. 2

    如何在Asp.Net MVC中创建自定义HTML帮助器

  3. 3

    如何在Asp.Net MVC中创建自定义HTML帮助器

  4. 4

    有没有办法在ASP.NET MVC Razor html帮助器中的大括号内隐藏html?

  5. 5

    检查ASP.NET MVC 4 HTML帮助器生成的HTML标记

  6. 6

    ASP.NET MVC帮助器,独立于MVC版本

  7. 7

    ASP.NET MVC @ Html.LabelFor(model => model.Name)帮助器

  8. 8

    ASP.NET MVC-在自定义HTML帮助器中使用模型

  9. 9

    ASP.NET Core MVC之前的应用程序中的Razor标签帮助器

  10. 10

    如何在不使用ASP.Net MVC html帮助器的情况下绑定html控件?

  11. 11

    ASP.NET MVC 5中的授权帮助

  12. 12

    在ASP.NET MVC中需要帮助Chart.js

  13. 13

    用枚举填充ASP.NET MVC中的SelectList

  14. 14

    如何从ASP.NET MVC中的枚举创建下拉列表?

  15. 15

    枚举ASP.NET MVC中以表单顺序发布的数据

  16. 16

    用枚举填充ASP.NET MVC中的SelectList

  17. 17

    ASP.NET MVC帮助器,为模型的两个属性创建帮助器

  18. 18

    ASP.NET Core中的IHttpActionResult和帮助器方法

  19. 19

    Knockout-Kendo库是否设计为与Kendo UI ASP.NET MVC html帮助器一起使用?

  20. 20

    Asp.net MVC 5无法在类库项目内的Razor视图中使用Html帮助器

  21. 21

    ASP.NET MVC中的HTML编码

  22. 22

    网址路由帮助Asp.net Mvc

  23. 23

    在asp.net 5 MVC6中,标记帮助器和Route属性之间的奇怪行为

  24. 24

    如何在ASP.NET MVC控制器中编写HTML代码

  25. 25

    带包装的自定义TextBox Asp.net MVC帮助器

  26. 26

    带有ASP.NET MVC 6锚标记帮助器的QueryString

  27. 27

    <$ G + $>在ASP.NET MVC5帮助器中出现奇怪的字符

  28. 28

    ASP.NET MVC:使用递归帮助器生成多级菜单

  29. 29

    与ASP.NET MVC中的ASP.NET等效

热门标签

归档