我是stil新的ASP.net MVC3,我試圖創建一個可以添加到用戶的項目的可選列表。所以Get方法看起來像發佈列表模型回到控制器
public ViewResult AddFavourite(int id)
{
ViewBag.UserId = id;
var movies = (from m in db.Movies
select new SelectableMovie() { Movie = m });
return View(movies.ToList());
}
和視圖看起來像
@using MovieManager.Models
@model List<SelectableMovie>
@using (Html.BeginForm("AddFavourite", "Users",
new { userId = ViewBag.UserId, movies = Model }, FormMethod.Post))
{
<table>
<tr>
<th>
Add
</th>
<th>
Title
</th>
<th>
Description
</th>
<th>
ReleaseDate
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.Selected)
</td>
<td>
@Html.DisplayFor(modelItem => item.Movie.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Movie.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Movie.ReleaseDate)
</td>
</tr>
}
</table>
<p>
<input type="submit" value="Add Favourites" />
</p>
}
這將顯示如預期的列表,但是當我回發到控制器我得到用戶ID,但電影參數爲空名單。我如何將視圖中使用的模型返回到Post Action中使用的控制器? POST操作是這樣的
[HttpPost]
public ActionResult AddFavourite(int userId, List<SelectableMovie> movies)
{
User user = db.Users.Single(u => u.ID == UserId);
//add items here
return View("Details", user);
}
使用沒有幫助。發回的列表仍然是一個空列表。 –
@RyanBurnham然後試試這個。這個想法是,你應該枚舉你的電影。 – karaxuna
問題不在視圖中顯示。但是那個鏈接確實有助於給我一個想法。事實證明,這是因爲我試圖通過匿名對象手動設置Post方法的電影參數。如果我刪除了此屬性mvc模型聯編程序工作。 –