控制器:模型綁定不工作爲表達式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
,那麼在兩臺計算機上都可以正常工作。
當然,它是不同的。爲什麼我應該將一個空屬性值(FavoriteTypeDropdownList)傳遞給我的發佈操作? – Rookian
也許我錯了?我的意思是他們不是同一個例子。我認爲兩者都必須是同一個班級的實例。 'CreateFavoriteListViewModel'和'CreateFavoriteListInputModel'是不一樣的 – codingbiz
你說當你使用'x => x.ListName'時它的工作原理?這是因爲'x'是動作所期待的模型的實例 - 'x'是'CreateFavoriteListInputModel' – codingbiz