簡體   English   中英

MVC5:視圖未提交正確的ViewModel

[英]MVC5 : View not submitting correct ViewModel

最小的代碼結構

我有兩個ViewModels cmsViewModelappointments

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM