[英]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.