如何在asp.net mvc 中获取多选的下拉列表值 [英] How to get multiselected Dropdownlist values in asp.net mvc

查看:53
本文介绍了如何在asp.net mvc 中获取多选的下拉列表值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在获取多选下拉列表值时遇到问题.谁能建议我如何获取多选下拉列表值以及如何在控制器中获取它们.

I have a problem to get multi select dropdown list values.can anyone suggest me how to get select multiple dropdownlist values as well as how to get them in controller.

我的代码是这样的:-

模型

public string BusinessUnitSiteSafetyRepresentative { get; set; }

控制器

[HttpPost]
public ActionResult AddClientBusinessUnitSite(LocalAddClientBusinessUnitSite local)
{
 var query = from o in entitydb.systemusersorganizations.toList()
             from c in entitydb.contacts.toList()
             where o.orgId == clientId 
             select new SelectListItem
             {
                Text = c. Name;
                Value = c.OrgId.toString()                 
             }
 ViewBag.list1 = query.ToList();
}

好吧,如果选择单个值,我可以得到 &可以保存到DB.但是如何选择多个值以及在Controller中获取它们以保存它们.

Well, I can get if single value is selected & can save to DB.But how to select multiple values as well as to get them in Controller so as to save them.

注意: - 我正在从数据库中检索下拉列表值,如上所示.

Note: - I am retrieving the dropdownlist values from DB as shown above.

查看

@Html.ListBoxFor(x => Model.BusinessUnitSiteSafetyRepresentative,new 
 MultiSelectList((IEnumerable<SelectListItem>)@Viewbag.list1) 

我已经看过一些例子,但没有一个对我有帮助.请帮助我.

I have gone through some examples but none of them helped me.Please help me.

推荐答案

我的建议是你的模型需要与你的多选列表中的项目有一对多的关系.

What I suggest is that your model needs to have a one to many relationship with the items in your multi select list.

一个例子是一个有多个标签的博客:

An example is a Blog with multiple tags:

您的博客模型可能如下所示:

Your blog model may look like:

public class Blog
{
    public Blog()
    {
        Tags = new List<Tag>();
    }

    public string BlogTitle{ get; set; }
    public string Body{ get; set; }
    public virtual ICollection<Tag> Tags{ get; set; }
}

你的标签模型是这样的:

And your tag model like so:

    public int TagID{ get; set; }
    public string TagName{ get; set; }
    public virtual ICollection<Blog> Blogs{ get; set; }

现在我建议你使用视图模型:

Now I recommend you use a view model:

public class BlogViewModel
{
    public Blog blog{ get; set; }
    public List<int> SelectedTags { get; set; }

    public virtual List<Tag> Tags{ get; set; }

    public BlogViewModel()
    {

    }

    public BlogViewModel(Blog _blog, List<Tag> _Tags)
    {
        blog = _blog;
        Tags = _Tags;
        SelectedTags = new List<int>();
    }
}

最后在您的视图中(从 ViewModel 继承);

And finally in your View (which inherits from the ViewModel);

@Html.ListBoxFor(m => m.SelectedTags,
new MultiSelectList(Model.Tags, "TagID", "Tag")
, null)

JQuery Chosen 插件非常适合这个http://harvesthq.github.io/chosen/.您可以通过以下方式使用它:

The JQuery Chosen plugin is excellent for this http://harvesthq.github.io/chosen/. You can use it by:

@Html.ListBoxFor(m => m.SelectedTags,
new MultiSelectList(Model.Tags, "TagID", "Tag")
, new { @class = "chzn-select", data_placeholder = "Tags..." })

用您自己的模型和控制器替换它,这应该可以解决您的问题.此外,这将适用于您的表单,用于创建新博客文章和编辑现有文章(添加和删除标签)

Replace this with your own model and controllers and this should solve your problem. Also, this will work in your form for creating a new blog post, and for editing an existing post (adding and removing tags)

在您的博客创建控制器操作中,您可以将其填充为:

In your Blog Create controller action, you would populate this as:

    public ActionResult Create()
    {

        var blog = new Blog();
        var AllTags = from t in db.Tags
                           select t;
        BlogViewModel viewModel = new BlogViewModel(blog,
            Tags.ToList());

        return View(viewModel);

    }

    public ActionResult Create(BlogViewModel blogViewModel)
    {
        Blog blog = blogViewModel.blog;

        if (blogViewModel.SelectedTags != null)
        {
            foreach (var TagID in blogViewModel.SelectedTags)
            {
                Tag tag = db.Tags.Where(t => t.TagID == TagID).First();
                blog.Tags.Add(tag);
            }
        }
        db.Blog.Add(blog);
        db.SaveChanges();
    }

这篇关于如何在asp.net mvc 中获取多选的下拉列表值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆