В настоящее время у меня есть встроенный javascript, который делает вызов ajax контроллеру частичного просмотра, который должен был обновить вместе с ним сумку. Однако это не похоже на то, что данные, по-видимому, сохраняются с основного представления, которое является нулевым, поскольку оно никогда не было установлено и если оно было установлено, данные все равно будут сохраняться (проверяться).Viewbag не обновляется
Это мой javascript-вызов ajax.
$.ajax({
url: btn.data('action-url'),
data: {
id: btn.data('id')
},
type: 'GET',
success: function (data) {
//delete all panels before showing new ones
$('.panel.panel-default').remove();
//push the new panels into the view
//$('#dash-content').html(data);
//Construct the partial view to be input into the main view
//Checks to see if browser supports templates
if ('content' in document.createElement('template')) {
var widgetModel = @Html.Raw(Json.Encode(ViewBag.widgets));
for (var i = 0; i < widgetModel.length; i++) {
var clone = loadwidgets(widgetModel[i]); //This function is in an external js file
var inputDestination = document.querySelector('#col2');
inputDestination.appendChild(clone);
console.log(inputDestination);
}
}
и вот действие, которое оно вызывает.
public ActionResult Dashboard(int? id)
{
ModelState.Clear();
//get all widgets associated dashboard
var getWidgetsQuery = (from widgets in db.widgets
where widgets.DashID == id
select widgets);
ViewBag.widgets = getWidgetsQuery.ToList();
return PartialView();
}
Razo r анализируется на сервере ** перед ** его отправляется в представление - '@ Html.Raw (Json.Encode (ViewBag.widgets));' генерирует начальное значение 'ViewBag.widgets' (когда страница первая загрузка) - она не изменяется только потому, что вы делаете вызов ajax (проверяете источник просмотра своей страницы) –
знаете ли вы, есть ли способ обойти это? – Johnathon64
Вы можете вернуть Json с данными, которые вы хотите использовать. И удалите это бессмысленное 'ModelState.Clear();' :) –