如何从 ApiController 访问数据控制器/数据模型



我有一个包含以下操作方法的ScoreDataModelsController:

public ActionResult Getnames()
        {
            return View(db.ScoreDataModels.ToList());
        }

在视图中,我有相应的ScoreDataModels文件夹,其中包含Getnames.cshtml:

@model IEnumerable<WebApplication1.Models.ScoreDataModel>
@{
    ViewBag.Title = "Get Names";
    Layout = "~/Views/Shared/_emptyLayout.cshtml";
}
<table class="table">
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
        </tr>
    }
</table>

这一切都很好用。现在我想使用 REST 使这些数据(即名称)以 json/XML 的形式访问。我已经设法让 ApiController 使用标准设置,并通过打开 http://.../api/Andi,我从 XML 格式的字符串 [] 中获取值:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebApplication1.Controllers
{
    public class AndiController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2", "und en dritte" };
  //Here I need help: ScoreDataModelsController sdm = new ScoreDataModelsController();
           // var res = from r in sdm

        }
        // GET api/<controller>/5
        public string Get(int id)
        {
            return "value";
        }
        // POST api/<controller>
        public void Post([FromBody]string value)
        {
        }
        // PUT api/<controller>/5
        public void Put(int id, [FromBody]string value)
        {
        }
        // DELETE api/<controller>/5
        public void Delete(int id)
        {
        }
    }
}

现在,不是"值 1,值 2..."我想从我的 ScoreDataModel/ScoreDataModelsController 中获取名称。

ScoreDataModel 看起来像这样。我使用此模型在Visual Studio中通过基架创建控制器和视图:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
    public class ScoreDataModel
    {
        [Key]
        public int ID { get; set; }
        public string Name { get; set; }
        public int Score { get; set; }
    }
}

如果您能引导我进入正确的方向,使这个 REST API 与我现有的数据控制器/数据模型一起工作,我将不胜感激。

创建一个保存数据访问逻辑的中心类,如下所示:

public class DataRepository
{
    private DatabaseContext db = new DatabaseContext();
    public List<ScoreDataModel> GetNames()
    {
        return db.ScoreDataModels.ToList();
    }
}

现在,您可以使用此类从 MVC 控制器和 api 控制器访问数据:

public class AndiController : ApiController
{
    private DataRepository dbRepo = new DataRepository();
    public IEnumerable<ScoreDataModel> Get()
    {
        List<ScoreDataModel> names = dbRepo.GetNames();
        return names;
    }
}

使用这个

var data= db.ScoreDataModels.ToList()
                List<String>list=new List<String>();
                foreach(var r in data)
                {
                    list.add(r.Name);
                }

                return list;

相关内容

  • 没有找到相关文章

最新更新