[英]MVC5 : View not submitting correct ViewModel
最小的代码结构
我有两个ViewModels cmsViewModel
和appointments
public partial class cmsViewModel
{
public string rows { get; set; }
public DateTime appt_date_time { get; set; }
public int appt_id { get; set; }
public List<community_meeting_schedule> lst { get; set; }
public cmsViewModel()
{
rows = null;
appt_date_time = DateTime.Today;
lst = null;
appt_id = -1;
}
}
public partial class appointments
{
public int appt_client_id { get; set; }
public int customer_id { get; set; }
[Key]
public int appt_id { get; set; }
public DateTime appt_date_time { get; set; }
public DateTime time_stamp { get; set; }
}
控制器中的操作方法如下所示:
[HttpPost]
public ActionResult CMSConfim(cmsViewModel model, string Command)
{
return View("CMSchedule", model);
}
View CMSConfim.cshtml
如下所示:
@model Scheduler_MVC.Models.cmsViewModel
@using (Html.BeginForm("CMSConfim", "appointments", FormMethod.Post))
{
@Html.HiddenFor(model => model.appt_id, new { id = "appt_id" })
@Html.HiddenFor(model => model.appt_client_id, new { id = "appt_client_id" })
@Html.HiddenFor(model => model.appt_date_time)
@Html.HiddenFor(model => model.appt_status)
@Html.HiddenFor(model => model.appt_type)
@Html.HiddenFor(model => model.lst)
<input type="submit" value="Back" id="backBtn" class="btn btn-default" />
<input type="button" value="Submit" id="submitBtn" class="btn btn-default" style="display:inline-block;" />
}
我想补充一点,就是我能够在表单的显示字段中呈现正确的值。 提交表单时出现错误。
错误
现在,当我通过Back
提交表单时。 我收到以下错误。 字典中的模型类型为“ cmsViewModel”,但必需的类型为“ appointments”。请提出我可能做错了的事情。
您的帖子视图模型类型为“约会”,但您的Html.BeginForm也将路由到“ AppointmentsController”
@using (Html.BeginForm("CMSConfim", "appointments", FormMethod.Post))
这条路线期待以下
public class AppointmentsController : Controller
{
public Action CMSConfirm(appointments model)
{
}
}
如果控制器名称错误,请更新您的Html.BeginForm
我也看不到参数“ Command”的匹配项。
为什么您的剃须刀sintax cmsViewModel中有? 您希望提交约会,但是有cmsVM。 同样在您的控制器中,您期望使用cmsVM。 您需要在剃须刀中提供约会VM,并在Controller中期待它。
[HttpPost]
public ActionResult CMSConfim(appointments model, string Command)
{
return View("CMSchedule", model);
}
或者,如果您想同时使用控制器。
[HttpPost]
public ActionResult CMSConfim(cmsViewModel model, appointments appoint, string Command)
{
return View("CMSchedule", model);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.