加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用模型绑定从MVC 4中的列表中选择项目

发布时间:2020-12-16 03:37:51 所属栏目:asp.Net 来源:网络整理
导读:给一个班级 public class Person{ // Some general properties public ListHobby Hobbies { get; set; }}public class Hobby{ // Some properties e.g. Name,etc.}static ListHobby AllHobbies { get; } 是否可以创建一个允许用户使用模型绑定选择他的爱好的
给一个班级

public class Person
{
    // Some general properties

    public List<Hobby> Hobbies { get; set; }
}

public class Hobby
{
    // Some properties e.g. Name,etc.
}

static List<Hobby> AllHobbies { get; }

是否可以创建一个允许用户使用模型绑定选择他的爱好的视图?

在视图中肯定可以遍历AllHobbies并呈现< input type =“checkbox”/>对于每个,然后在回发控制器中手动连接所选值.这似乎应该可以用模型绑定,但我不知道如何.

解决方法

当然,我建议你使用编辑器模板.

假设一个爱好有一个名字和一个布尔字段,表明它是否被用户选中:

public class Hobby
{
    public string Name { get; set; }
    public bool Selected { get; set; }
}

然后是一个控制器将模型提供给视图并处理表单提交:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var person = new Person
        {
            Hobbies = new[]
            {
                new Hobby { Name = "hobby 1" },new Hobby { Name = "hobby 2",Selected = true },new Hobby { Name = "hobby 3" },}.ToList()
        };
        return View(person);
    }

    [HttpPost]
    public ActionResult Index(Person person)
    {
        var selectedHobbies = person
            .Hobbies
            .Where(x => x.Selected).Select(x => x.Name);
        string message = string.Join(",",selectedHobbies);
        return Content("Thank you for selecting: " + message);
    }
}

然后是一个包含允许用户选择爱好的表单的视图:

@model Person

@using (Html.BeginForm()) 
{
    <h2>Hobbies</h2>
    @Html.EditorFor(x => x.Hobbies)
    <button type="submit">OK</button>
}

以及一个相应的编辑器模板,它将自动为Hobbies集合的每个元素呈现(?/ Views / Home / EditorTemplates / Hobby.cshtml – >注意模板的名称和位置很重要):

@model Hobby

<div>
    @Html.LabelFor(x => x.Selected,Model.Name)
    @Html.HiddenFor(x => x.Name)
    @Html.CheckBoxFor(x => x.Selected)
</div>

对于更高级的编辑方案,我建议您浏览Steven Sanderson的blog post关于此主题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读