Я создаю приложение ASP.NET MVC 5, и я довольно новичок в этой технологии. Я был бы очень благодарен за каждый совет, потому что я застрял.Как динамически извлекать данные из базы данных для кода Javascript в ASP.NET MVC 5?
Я строю игру с памятью. Я уже создал JavaScript-код игры, и игра работает как автономный код со статически определенным массивом карт/изображений для игры. Но теперь я хочу включить его в структуру приложения MVC, используя карты, извлеченные из базы данных.
Модель:
using System;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;
namespace SmartBunnyApp.Models
{
public class Word
{
public int WordId { get; set; }
public string EnglishWord { get; set; }
public string PolishTranslation { get; set; }
public string Category { get; set; }
public byte[] ImageData { get; set; }
public string ImageMimeType { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SmartBunnyApp.Models;
namespace SmartBunnyApp.Models
{
public class WordsListViewModel
{
public IEnumerable<Word> Words { get; set; }
public PagingInfo PagingInfo { get; set; }
public string CurrentCategory { get; set; }
public byte[] ImageData { get; set; }
}
}
Контроллер:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SmartBunnyApp.Abstract;
using SmartBunnyApp.Models;
namespace SmartBunnyApp.Controllers
{
public class WordController : Controller
{
private IWordRepository repository;
public int PageSize = 4;
public WordController(IWordRepository wordRepository)
{
this.repository = wordRepository;
}
public ViewResult List(string category, int page = 1)
{
WordsListViewModel viewModel = new WordsListViewModel
{
Words = repository.Words
.Where(p => category == null || p.Category == category)
.OrderBy(p => p.WordId)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = category == null ?
repository.Words.Count() :
repository.Words.Where(e => e.Category == category).Count()
},
CurrentCategory = category
};
return View(viewModel);
}
public IEnumerable<Word> GetAllWords()
{
return repository.Words;
}
public FileContentResult GetImage(int wordId)
{
Word word = repository.Words.FirstOrDefault(p => p.WordId == wordId);
if (word != null)
{
return File(word.ImageData, word.ImageMimeType);
} else
{
return null;
}
}
}
}
И теперь мне нужно иметь JavaScript (или, как я уже должен знать) JQuery код, который поможет мне получить слова и их изображения из базы данных для выбранной категории и помещают их в простую многомерную таблицу, такую как:
var memory_matching_array = [['dog.jpg','DOG],['penguin.jpg','PENGUIN']];
Я попытался реализовать его так, как кто-то предложил в комментарии ниже, но я все время получаю сообщение об ошибке. Особенно тот факт, что мне приходится указывать URL-адрес в функции jQuery, трудно для меня (я понятия не имею, как этот URL должен выглядеть точно), а затем часть, когда мне приходится помещать данные в таблицу, чтобы она выглядела тот, который я вставил выше.
Спасибо, ребята, за помощь!
https://www.asp.net/mvc/overview/models-data –