Asp.net mvc 5 我应该在MVC 5中也在POST中绑定html.dropdownlistfor吗?
这是我的收获 这是我的帖子 这是我的模型 我的观点有一个类似的下拉列表 当我回来的时候,一切都很好。 当我发布时,数据被保存,但在UI中,我得到一个错误 具有键“Subject”的ViewData项的类型为 “System.String”,但必须是“IEnumerable”类型Asp.net mvc 5 我应该在MVC 5中也在POST中绑定html.dropdownlistfor吗?,asp.net-mvc-5,Asp.net Mvc 5,这是我的收获 这是我的帖子 这是我的模型 我的观点有一个类似的下拉列表 当我回来的时候,一切都很好。 当我发布时,数据被保存,但在UI中,我得到一个错误 具有键“Subject”的ViewData项的类型为 “System.String”,但必须是“IEnumerable”类型 选项不会在表单中发回。您必须再次创建它们: [HttpPost] [Authorize] public ActionResult SendMessage(MessageModel model) { try {
选项不会在表单中发回。您必须再次创建它们:
[HttpPost]
[Authorize]
public ActionResult SendMessage(MessageModel model)
{
try {
if (ModelState.IsValid)
{
XmlDocument requestXml = XmlUtil.CreateRequestDocument("message", new
{
Message = model.MessageBody,
Type = model.Subject,
PatientID = model.PatientId,
RecipientID = model.RecipientId,
IsUrgent = model.IsUrgent ? "1" : "0"
});
//save message logic here
}
}
catch (Exception ex)
{
ModelState.AddModelError("ServerMessage", ex.Message);
}
var subjects = this.GetDistributionLists();
if (subjects != null) {
ViewBag.Subjects = new SelectList(subjects, "Value", "Text");
}
if (Request.IsAjaxRequest())
{
return PartialView("SendMessagePartial", model);
}
else
{
return View(model);
}
}
看看这里,我的朋友@Misters,我没有将数据绑定到DropDownList for的问题。我的问题是当我提交/发布表单时。
[HttpPost]
[Authorize]
public ActionResult SendMessage(MessageModel model)
{
try {
if (ModelState.IsValid)
{
XmlDocument requestXml = XmlUtil.CreateRequestDocument("message", new
{
Message = model.MessageBody,
Type = model.Subject,
PatientID = model.PatientId,
RecipientID = model.RecipientId,
IsUrgent = model.IsUrgent ? "1" : "0"
});
//save message logic here
}
}
catch (Exception ex)
{
ModelState.AddModelError("ServerMessage", ex.Message);
}
if (Request.IsAjaxRequest())
{
return PartialView("SendMessagePartial", model);
}
else
{
return View(model);
}
}
public class MessageModel
{
[DisplayName("RecipientId")]
public int RecipientId { get; set; }
[DisplayName("Sender")]
[StringLength(255)]
public string Sender { get; set; }
[DisplayName("SenderId")]
public int SenderId { get; set; }
[DisplayName("Message")]
[StringLength(4000)]
[Required]
public string MessageBody { get; set; }
[DisplayName("Subject")]
[StringLength(255)]
[Required]
public string Subject { get; set; }
[DisplayName("Patient")]
[Required]
public int PatientId { get; set; }
public bool IsUrgent { get; set; }
}
@Html.DropDownListFor(m => m.Subject, (SelectList)ViewBag.Subjects, new { @class = "form-control" })
[HttpPost]
[Authorize]
public ActionResult SendMessage(MessageModel model)
{
try {
if (ModelState.IsValid)
{
XmlDocument requestXml = XmlUtil.CreateRequestDocument("message", new
{
Message = model.MessageBody,
Type = model.Subject,
PatientID = model.PatientId,
RecipientID = model.RecipientId,
IsUrgent = model.IsUrgent ? "1" : "0"
});
//save message logic here
}
}
catch (Exception ex)
{
ModelState.AddModelError("ServerMessage", ex.Message);
}
var subjects = this.GetDistributionLists();
if (subjects != null) {
ViewBag.Subjects = new SelectList(subjects, "Value", "Text");
}
if (Request.IsAjaxRequest())
{
return PartialView("SendMessagePartial", model);
}
else
{
return View(model);
}
}