Основная проблема в том, что ваш View не привязан к правильной ViewModel. Вы говорите, что ваше представление работает с OrdreDetails_VM
, когда оно фактически работает с RMAHistory_VM
. Временные данные, точно так же, как те, которые представляет ваше свойство RMAType
, должны либо входить в ту же модель ViewModel, если она у вас есть, либо как часть ViewBag, если вы не хотите ее создавать.
Итак, начнем с первого обновления RMAHistory_VM
, чтобы получить необходимые данные:
public class RMAHistory_VM
{
public int SelectedRMAType { get; set; }
public string RMASager { get; set; }
public string Kundenavn { get; set; }
public string Ordrenummer { get; set; }
public List<SelectListItem> RMATypes { set; get; }
}
Тогда давайте отбросим OrdreDetails_VM
и заставим ваше представление правильно использовать RMAHistory_VM
:
@model NameSpace.RMAHistory_VM
@Html.DropDownListFor(s => s.SelectedRMAType, Model.RMATypes, "- Select -", new { @class = "form-control", @id = "SelectedRMAType" })
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label>KundeNavn</label>
<input name="Kundenavn" type="text" id="Kundenavn" class="form-control">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label>Ordrenummer</label>
<input name="Ordrenummer" id="Ordrenummer" type="text" class="form-control" >
</div>
</div>
</div>
Обратите внимание, что ваш вызов AJAX также не соответствует структуре ViewModel (вы даже создаете объект, который вы не используете), поэтому вы должны соответствующим образом обновить его:
function myfunction() {
var model = {
Kundenavn: $("#Kundenavn").val(),
Ordrenummer: $("#Ordrenummer").val(),
SelectedRMAType: $("#SelectedRMAType").val()
};
$.ajax({
type: 'POST',
url: "/Account/ProcessRequestRMA",
dataType: 'json',
data: model,
success: function (status) {
if (status) {
status.Kundenavn = model.Kundenavn;
status.Ordrenummer = model.Ordrenummer;
status.RMATypeID = model.SelectedRMAType;
console.log("Send");
}
else {
alert("Something Wrong");
}
},
error: function () {
console.log('something went wrong - debug it!');
}
});
};
И, наконец, обновите Действие, чтобы оно загружалось ViewBag.RMATypes
:
public ActionResult RMA()
{
//DDL
var model = new RMAHistory_VM
{
RMATypes = new SelectList(data.RMAType, "ID", "RMASager").ToList();
};
// do some another stuff
return View(model);
}
Затем вам нужно будет обновить способ обработки запроса, чтобы он соответствовал новой структуре ViewModel:
public JsonResult ProcessRequestRMA(RMAHistory_VM model)
{
var RMA = new RMA_History // its Modal
{
Kundenavn = model.Kundenavn,
Ordrenummer = model.Ordrenummer,
RMATypeID = model.SelectedRMAType
};
db.RMA_History.Add(RMA);
db.SaveChanges();
return Json(model, JsonRequestBehavior.AllowGet);
}