使用selected.js我丢失了POST上的元素

时间:2014-02-20 07:09:56

标签: c# asp.net-mvc-3 asp.net-mvc-4

我在视图中有这个代码:

  var writers = new List<Writer> { 
new Writer() { name = "Writer1", surname = "SWriter1" }, 
new Writer() { name = "Writer2", surname = "SWriter2" },
new Writer() { name = "Writer3", surname = "SWriter3" }, 
new Writer() { name = "Writer4", surname = "SWriter14" }, 
new Writer() { name = "Writer5", surname = "SWriter5" }, 
new Writer() { name = "Writer6", surname = "SWriter6" }
 };

  <div>
                @Html.Label("Writers")
                <select class="chosen-select" multiple="" data-placeholder="Select writers of the Film">
                    @for(int i = 0; i < writers.Count; i ++)
                    {
                        <option value="@i">@writers[i].name</option>
                    }
                </select>
            </div>

            <input type="submit" value="Create" />

当我选择几个作者后点击提交按钮时,我丢失了POST上的元素。在控制器中,我接收到html的其他元素但没有编写者。这是我的行动方法:

public ActionResult Create([Bind(Exclude = "poster, trailer")]Movie movie, HttpPostedFileBase poster, HttpPostedFileBase trailer)

我的模特是:

[MetadataType(typeof(MovieMetadata))]
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Movie")
public partial class Movie : INotifyPropertyChanging, INotifyPropertyChanged
    {
          .....other fields of movie.....

          private EntitySet<Movie_Writer> _Movie_Writers;
    }

class MovieMetadata
{
    [ScaffoldColumn(false)]
    public int id { get; set; }

    [Required(ErrorMessage = "Title is required")]]
    [StringLength(70, ErrorMessage = "Title must have a lenght less than 70")]
    public string title { get; set; }

    [Required(ErrorMessage = "The realese date of the movie is required")]
    public DateTime releaseDate { get; set; }

    public string storyline { get; set; }

    public Binary poster { get; set; }

    [ScaffoldColumn(false)]
    public Binary trailer { get; set; }
}

我是否需要在模型中添加Writers列表并修改操作方法? Movie_Writer是一个中间表,因为关系是多对多的。

1 个答案:

答案 0 :(得分:0)

试试这个......

Name标记中添加select属性,以便您可以在控制器中获取数据

更新

<select Name="YOUR_MODEL_NAME" Class=...>