コントローラ:
public class HomeController : Controller
{
public ActionResult Index()
{
var myViewModel = new CreateFavoriteListViewModel();
var favoriteTypeDropdownList = new List<SelectListItem>();
favoriteTypeDropdownList.Add(new SelectListItem { Text = "Text1", Value = "1" });
favoriteTypeDropdownList.Add(new SelectListItem { Text = "Text2", Value = "2" });
myViewModel.FavoriteTypeDropdownList = favoriteTypeDropdownList;
return View(myViewModel);
}
[HttpPost]
public ActionResult Post(CreateFavoriteListInputModel createFavoriteListInputModel)
{
return new EmptyResult();
}
}
モデル:
public class CreateFavoriteListViewModel
{
public CreateFavoriteListInputModel CreateFavoriteListInputModel { get; set; }
public List<SelectListItem> FavoriteTypeDropdownList { get; set; }
}
public class CreateFavoriteListInputModel
{
[Required]
public string ListName { get; set; }
public int SelectedFavoriteType { get; set; }
}
意見:
@model MvcApplication3.Controllers.CreateFavoriteListViewModel
<h2>title</h2>
@using (Html.BeginForm("Post", "Home", FormMethod.Post))
{
@Html.LabelFor(x => x.CreateFavoriteListInputModel.ListName)
@Html.TextBoxFor(x => x.CreateFavoriteListInputModel.ListName)
@Html.LabelFor(x => x.CreateFavoriteListInputModel.SelectedFavoriteType)
@Html.DropDownListFor(x => x.CreateFavoriteListInputModel.SelectedFavoriteType, Model.FavoriteTypeDropdownList)
<input type="submit" value="Save" id="btnCreateList" name="btnCreateList" />
}
ご覧のとおり、特別なラムダ式を持つ入力モデルを使用しています。( x=>x.CreateFavoriteListInputModel.ListName
)。奇妙な問題は、これが自宅のコンピューターでは機能するが、会社のコンピューターでは機能しないことです ( createFavoriteListInputModel = Null
)。ASP.NET MVC4 などにはさまざまなバージョンがあるようです。
この種のモデル バインディングが ASP.NET MVC でサポートされたときから知っている人もいるでしょう。
私のコードは役に立ちますか?
ビューモデルとラムバ式を変更すると、x=>x.ListName
すべてが両方のコンピューターで機能します。