当我尝试提交/发布数据时发生错误...有人可以帮助我尝试每个帖子,但他们没有帮助我。我是mvc的新手......任何帮助都将被授予 这是我的代码......
public ActionResult Create()
{
UserProfileCreateViewModel model = new UserProfileCreateViewModel();
model.Gender = _GenderRepository.GetAll()
.Select(x => new SelectListItem
{
Value = x.ID.ToString(),
Text = x.DESCRIPTION
});
return View(model);
}
[HttpPost]
public ActionResult Create(UserProfileCreateViewModel model)
{
if (ModelState.IsValid)
{
UserProfile user = new UserProfile();
user.GENDER_ID = model.GenderID;
_UserProfileRepository.Add(user);
_UserProfileRepository.Save();
return RedirectToAction("Index", "Home");
}
return View(model);
}
查看
<div class="form-group">
@Html.LabelFor(model => model.GenderID, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.GenderID, Model.Gender, "Select from List", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.GenderID, string.Empty, new { @class = "text-danger" })
</div>
</div>
模型
public class UserProfileCreateViewModel
{
[Required(ErrorMessage="{0} is required")]
[Display(Name="Gender")]
public int GenderID { get; set; }
public IEnumerable<SelectListItem> Gender { get; set; }
}
InvalidOperationException:具有键'GenderID'的ViewData项的类型为'System.Int32',但必须是'IEnumerable&lt; SelectListItem&gt;'类型。
我试过这个...... // POST:/ UserProfile / Create /
[HttpPost]
public ActionResult Create(UserProfileCreateViewModel model)
{
if (ModelState.IsValid)
{
UserProfile user = new UserProfile();
user.GENDER_ID = model.GenderID;
_UserProfileRepository.Add(user);
_UserProfileRepository.Save();
return RedirectToAction("Index", "Home");
}
model.Gender = _GenderRepository.GetAll().Select(x =>
new SelectListItem
{
Value = x.ID.ToString(),
Text = x.DESCRIPTION
});
return View(model);
}
答案 0 :(得分:0)
这可能是“性别”之间的问题:
[Display(Name="Gender")]
public int GenderID { get; set; }
public IEnumerable<SelectListItem> Gender { get; set; }
如果我记得很清楚,MVC会尝试自动映射字段。尝试重命名(Name="Gender")
中的(Name="GenderID")
或IEnumerable<SelectListItem> Gender
中的IEnumerable<SelectListItem> GenderEnumeration
答案 1 :(得分:0)
错误表示Model.Gender
的值为null
(因此DropDownListFor()
方法预期第一个参数为IEnumerable<SelectListItem>
。
在您的情况下,当您提交表单并且ModelState
无效时,您将返回视图并且尚未为Model.Gender
分配值(因此它是null
,并且摘要为抛出。
确保在返回视图之前在POST方法中重新分配Model.Gender
的值(就像在GET方法中一样)。