mvc razor html.list,c# - ASP.NET MVC5 Razor ListBox in Form with MultiSelectList - Stack Overflow

I am trying to have a ListBox where one can select multiple Tags for a Quote that is beeing created in the Form. Everything is rendered fine, all options that should be shown are shown in the ListBox, but even though I selected some, the corresponding Collection in the returned ViewModel is empty or null.

I simplified the model for the sake of my question and it basically only has Quotes with a many-to-many relationship to Tags. So, when I want to create a new Quote I have to give it Content and a Collection of Tags.

So I have a model like this:

public class Quote

{

public int Id { get; private set; }

[Required]

public string Content { get; set; }

public ICollection Tags { get; private set; }

}

and

public class Tag

{

public int Id { get; set; }

[Required]

public string Designation { get; set; }

public ICollection Quotes { get; private set; }

}

ViewModel:

public class QuoteCreateViewModel

{

public IEnumerable Tags { get; set; }

public Quote Quote { get; set; }

public QuoteCreateViewModel(Quote quote, IList tags)

{

Quote = quote;

Tags = tags;

}

}

QuotesController:

public ActionResult Create()

{

QuoteCreateViewModel viewModel =

new QuoteCreateViewModel(new Quote(), _context.Tags.ToList());

return View(viewModel);

}

[HttpPost]

public ActionResult Create(QuoteCreateViewModel quoteCreateViewModel)

{

Quote quote = quoteCreateViewModel.Quote;

_context.Quotes.Add(quote);

_context.SaveChanges();

return RedirectToAction("Index");

And the corresponding View:

@model CiteMe.ViewModels.QuoteCreateViewModel

@using (Html.BeginForm("Create", "Quotes"))

{

@Html.LabelFor(m => m.Quote.Content)

@Html.TextBoxFor(m => m.Quote.Content, new { @class = "form-control"})

@Html.LabelFor(m => m.Quote.Tags)

@Html.ListBoxFor(m => m.Quote.Tags, new MultiSelectList(Model.Tags, "Id", "Designation"), new { @class = "form-control", multiple = "multiple" })

Save

}

As far as I am concerned @Html.ListBoxFor(m => m.Quote.Tags, new MultiSelectList(Model.Tags, "Id", "Designation"), new { @class = "form-control", multiple = "multiple" }) should do the trick for me. I have also tried an approach I found here, but it delivers the same results. Empty Collections even though something was selected or null instead of an instance of the Collection.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值