首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从ApiController访问数据控制器/数据模型?

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

Stack Overflow用户
提问于 2016-06-12 08:18:31
回答 2查看 461关注 0票数 0

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

代码语言:javascript
复制
public ActionResult Getnames()
        {
            return View(db.ScoreDataModels.ToList());
        }

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

代码语言:javascript
复制
@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,我从string[]获得了string[]格式的值:

代码语言:javascript
复制
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)
        {
        }
    }
}

现在,代替"value1,value2 .“我想从我的ScoreDataModel / ScoreDataModelsController中得到名字。

ScoreDataModel看起来是这样的。我在Visual中使用这个模型创建了控制器和由脚手架查看的视图:

代码语言:javascript
复制
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与我现有的数据控制器/数据模型一起工作,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-12 13:32:59

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

代码语言:javascript
复制
public class DataRepository
{
    private DatabaseContext db = new DatabaseContext();

    public List<ScoreDataModel> GetNames()
    {
        return db.ScoreDataModels.ToList();
    }
}

现在,您可以使用这个类访问来自MVC控制器和api控制器的数据:

代码语言:javascript
复制
public class AndiController : ApiController
{
    private DataRepository dbRepo = new DataRepository();

    public IEnumerable<ScoreDataModel> Get()
    {
        List<ScoreDataModel> names = dbRepo.GetNames();
        return names;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-12 08:38:50

使用这个

代码语言:javascript
复制
var data= db.ScoreDataModels.ToList()

                List<String>list=new List<String>();

                foreach(var r in data)
                {
                    list.add(r.Name);

                }


                return list;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37772101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档