c# - ASP MVC EF MultiSelect HTTP POST

标签 c# asp.net asp.net-mvc entity-framework

我的 Controller :

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(BlogCompModel blogmodel)
{
   if (ModelState.IsValid)
   {
      ...
   }
}

我的看法:

@model BlogProject.Models.BlogCompModel

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

    ...


   <div class="form-group">
      @Html.LabelFor(model => model.BlogCompModel.posts, "Property", new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.ListBoxFor(model => model.posts, new MultiSelectList(Model.posts, "post_ID", "postTitle"))
        @Html.ValidationMessageFor(model => model.posts.posts)
      </div>
   </div>

}

帖子错误信息:

"The parameter conversion from type 'System.String' to type 'BlogProject.Models.Posts' failed because no type converter can convert between these types."}  System.Exception {System.InvalidOperationException}

如您所见,我不确定如何将 HTML 多选列表从 Post_ID 集合转换为 ICollection 帖子。

谢谢!

最佳答案

您可以在您的 BlogCompModel 模型中添加另一个属性,它会将所有选定的帖子包装在其中。

public class BlogCompModel
{
    // 
    public string[] selectedPosts { get; set; }
}

那么在你看来:

@Html.ListBoxFor(model => model.selectedPosts , 
                 new MultiSelectList(Model.posts, "post_ID", "postTitle"))
@Html.ValidationMessageFor(model => model.selectedPosts )

关于c# - ASP MVC EF MultiSelect HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21944328/

相关文章:

c# - SSAS ADOMD 连接强制关闭

css - 未能在验证错误中应用样式

asp.net-mvc - Ajax 与 JQuery MVC 表单发布

sql-server - SQL Server 2005 中的 EF 和日期时间

c# - WPF NotifyIcon - 上下文菜单位置

asp.net - 更改密码后,从所有浏览器注销用户

c# - 如何在 ASP.NET 上包含 libsodium.net

c# - JavaScript 中的业务逻辑

c# - 是否可以定义类型在 OrderBy 标准中的使用方式

c# - 如何在数据库更新之前保存 DataBaseModel.edmx 更新?