컨트롤러 :모델 표현을 위해 작동하지 않는 X => x.InputModel.PropertyName
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" />
}
A 당신은 특별한 lambda 표현식을 가진 입력 모델을 사용하는 것을 볼 수 있습니다. (x=>x.CreateFavoriteListInputModel.ListName
). 이상한 문제는 이것이 내 집 컴퓨터에서 작동하지만 내 회사에서는 작동하지 않는다는 것입니다 (createFavoriteListInputModel = Null
). ASP.NET MVC4 또는 그와 비슷한 버전이 여러 개있는 것 같습니다.
아마도 이런 종류의 모델 바인딩이 ASP.NET MVC에서 지원되었을 때부터 누군가가 알고 있습니다.
내 코드가 효과가 있습니까?
뷰 모델과 lamba 표현식을 x=>x.ListName
으로 변경하면 두 컴퓨터에서 모두 작동합니다.
물론 다릅니다. 내 게시 작업에 null 속성 값 (FavoriteTypeDropdownList)을 전달해야하는 이유는 무엇입니까? – Rookian
아마도 잘못 되었나요? 내 말은 그들이 같은 경우가 아니라는 것이다. 두 클래스 모두 같은 클래스의 인스턴스 여야한다고 생각합니다. 'CreateFavoriteListViewModel'과'CreateFavoriteListInputModel'은 같지 않습니다 – codingbiz
'x => x.ListName'을 사용하면 작동합니까?왜냐하면'x'는 액션이 기대했던 Model의 인스턴스입니다.'x'는'CreateFavoriteListInputModel'입니다. – codingbiz