У меня есть следующие ViewModel и соответствующие две модели.Ошибка обновления ViewModel с ошибкой
Я отображение данных из этого ViewModel на виде, но когда я отправляю данные для обновления, следующее сообщение об ошибке
Модели элемент передается в словарь типа «WebMSM.Models.ComplainDetailsVm», но для этого словаря требуется элемент модели типа «WebMSM.Models.REPAIRING».
public partial class ComplainDetailsVm
{
public virtual REPAIRING REPAIRINGs { get; set; }
public virtual COMPLAIN COMPLAINs { get; set; }
}
REPAIRING.cs
public partial class REPAIRING
{
[Key]
[DisplayName("JOBSHEET NO")]
public int JOBSHEET_NO { get; set; }
[DisplayName("IN TIME")]
public Nullable<System.DateTime> IN_TIMESTAMP { get; set; }
[DisplayName("CREATE TIME")]
public Nullable<System.DateTime> CREATE_TIMESTAMP { get; set; }
[DisplayName("LAST EDIT TIME")]
public Nullable<System.DateTime> LAST_EDIT_TIMESTAMP { get; set; }
}
COMPLAIN.cs
public partial class COMPLAIN
{
[Key]
[DisplayName("JOBSHEET NO")]
public int JOBSHEET_NO { get; set; }
[Required]
[DisplayName("COMPANY NAME")]
public string COMPANY_NAME { get; set; }
[Required]
[DisplayName("MODEL NAME")]
public string MODEL_NAME { get; set; }
}
CONTROLLER ДЕЙСТВИЯ
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(int? id,ComplainDetailsVm model)
{
if (ModelState.IsValid)
{
var r = model.REPAIRINGs;
var c = model.COMPLAINs;
db.Entry(r).State = EntityState.Modified;
db.SaveChanges();
}
return View(model);
}
UPDATE
VIEW
@model WebMSM.Models.ComplainDetailsVm
@{
ViewBag.Title = "EditRepairingComplain";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.REPAIRINGs.JOBSHEET_NO)
@Html.HiddenFor(model => model.COMPLAINs.JOBSHEET_NO)
<div class="form-group">
@Html.LabelFor(model => model.COMPLAINs.COMPANY_NAME,
htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
@Html.TextBoxFor(model => model.COMPLAINs.COMPANY_NAME, new { @class = "form-control", @readonly = "readonly" })
@Html.ValidationMessageFor(model => model.COMPLAINs.COMPANY_NAME, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.COMPLAINs.MODEL_NAME, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
@Html.TextBoxFor(model => model.COMPLAINs.MODEL_NAME, new { @class = "form-control", @readonly = "readonly" })
@Html.ValidationMessageFor(model => model.COMPLAINs.MODEL_NAME, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.REPAIRINGs.IN_TIMESTAMP, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
@Html.EditorFor(model => model.REPAIRINGs.IN_TIMESTAMP, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.REPAIRINGs.IN_TIMESTAMP, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.REPAIRINGs.CREATE_TIMESTAMP, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
@Html.EditorFor(model => model.REPAIRINGs.CREATE_TIMESTAMP, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.REPAIRINGs.CREATE_TIMESTAMP, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.REPAIRINGs.LAST_EDIT_TIMESTAMP, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
@Html.EditorFor(model => model.REPAIRINGs.LAST_EDIT_TIMESTAMP, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.REPAIRINGs.LAST_EDIT_TIMESTAMP, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-6">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
UPDATE ADDED Получ
// GET: Repairing/Edit/5
public ActionResult Edit(int? id)
{
var vm = new ComplainDetailsVm();
var r = db.REPAIRINGs.Find(id);
var c = db.COMPLAINs.Find(id);
if (r != null)
{
vm.REPAIRINGs = r;
vm.COMPLAINs = c;
}
//ViewData["LIST_ESTIMATE_AMOUNT_OK_FROM_CUSTOMER"] = lstOKNOTOK;
return View("EditRepairingComplain",vm);
}
Спасибо.
Сообщение об ошибке само собой разумеется - передается экземпляр 'ComplainDetailsVm' в представление, которое имеет' @model WebMSM.Models.REPAIRING' - измените одно или другое так, чтобы они соответствовали –
. Я добавляю представление для вашего объяснения. Я добавляю правильную модель к представлению. – Hemal
Вам нужно показать свой метод GET. Представленное вами представление не имеет ничего общего с ошибкой. –