Как пройти объектной модели в JavaScript-функции в asp.net основной
У меня есть проблема при передаче объектов модели в функцию javascript в .cshtml (asp.net основной проект). Я много искал, но не могу найти решение для решения этой проблемы. Я строю веб-приложение, используя пример строки ChartJs.
Существует функция js .файл cshtml,
<script>
document.getElementById('addData').addEventListener('click', function() {
if (config.data.datasets.length > 0) {
var month = MONTHS[config.data.labels.length % MONTHS.length];
config.data.labels.push(month);
config.data.datasets.forEach(function(dataset) {
dataset.data.push(randomScalingFactor());
});
window.myLine.update();
}
});
</script>
Я новичок в asp.net основной и JS. Есть ли способ добавить данные из модели в функцию js? Спасибо!
1 ответ:
Я решил эту проблему!
Решение:
Модель:
public class SalesViewModel { public string salesdate { get; set; } public int salesprice { get; set; } }
Данные:
public class SalesContext { public string ConnectionString { get; set; } public SalesContext(string connectionString) { this.ConnectionString = connectionString; } public SalesContext() { } public List<SalesViewModel> GetAllData() { List<SalesViewModel> list = new List<SalesViewModel>(); list.Add(new SalesViewModel() { salesdate = "1", salesprice = 3 }); list.Add(new SalesViewModel() { salesdate = "2", salesprice = 6 }); list.Add(new SalesViewModel() { salesdate = "3", salesprice = 7 }); list.Add(new SalesViewModel() { salesdate = "4", salesprice = 2 }); list.Add(new SalesViewModel() { salesdate = "5", salesprice = 1 }); return list; } }
Контроллер:
using Newtonsoft.Json; public IActionResult Chart() { SalesContext sc = new SalesContext(); string json = JsonConvert.SerializeObject(sc.GetAllData()); //ViewData["chart"] = json; ViewBag.Sales = json; return View(sc.GetAllData()); }
Вид:
document.getElementById('addData').addEventListener('click', function() { if (config.data.datasets.length > 0) { var salesdata = @Html.Raw(ViewBag.Sales); config.data.datasets.forEach(function(dataset) { for (var i = 0; i < salesdata.length; i++) { var month = MONTHS[config.data.labels.length % MONTHS.length]; config.data.labels.push(month); dataset.data.push(salesdata[i].salesprice); } }); window.myLine.update(); } });
Используйте
var salesdata = @Html.Raw(ViewBag.Sales)
для получения данных от контроллера!Используйте
salesdata[i].salesprice
для передачи данных в набор данных!Спасибо!