У меня есть список, и я загружаюсь на свою страницу редактирования, с возможностью добавления еще. Частичное представление имеет множество раскрывающихся списков, которые в настоящее время заполняются через ViewBag. Все отлично работает при начальной загрузке, однако, когда я использую Add для добавления другой части через ajax, выпадающие списки выдают конкретную ошибку.
'Элемент ViewData, имеющий ключ' UserTypeId ', имеет тип' System.Int32 ', но должен иметь тип' IEnumerable '.'
Я чувствую, что должен быть лучший способ сделать это, но мой поиск в Google подвел меня. Любая помощь будет оценена.
Контроллер
//UserTypes is List<UserType>
//int ID
//string Name
ViewBag.ListUserTypes = new SelectList(UserTypes, "ID", "Name");
public ActionResult CreateNewQuotesMentions()
{
var model = new QuoteMention();
return PartialView("~/Views/master/newsalert/_QuotesMentions.cshtml", model);
}
ViewModel
public List<QuoteMention> QuotesMentions { get; set; }
Вид
<div id="QuotesMentions">
@foreach (var item in Model.QuotesMentions)
{
@Html.Partial("~/Views/Master/NewsAlert/_QuotesMentions.cshtml", item)
}
</div>
<div>
<input type="button" name="addQuotesMentions" id="addQuotesMentions" value="Add" />
</div>
.JS
$("#addQuotesMentions").on('click', function () {
$.ajax({
type: "GET",
url: '/en/master/news-alert/CreateNewQuotesMentions',
success: function (partialView) {
$('#QuotesMentions').append(partialView);
}
});
});
$(document).on('click', ".btn-delete", function (e) {
var container = $(this).closest('.box');
var id = container.data('id');
if (!id) {
container.remove();
} else {
// see notes below
}
});
ThePartialView
@model Portal.Business.QuoteMention
@using (Html.BeginCollectionItem("NewQuotes"))
{
<div class="col-sm-4">
@Html.LabelFor(m => m.UserType, new { @class = "control-label" })
@Html.DropDownListFor(m => m.UserTypeId, (SelectList)ViewBag.ListUserTypes,
"-- Please Select --", new { @class = "form-control", style="width:100%;"}
)
</div>