【发布时间】:2019-09-16 08:43:30
【问题描述】:
我在 C# ASP.NET MVC 和 ADO.NET Entity Model 中使用 Oracle Database 创建了 Web API,一切正常。
现在,我需要创建另一个项目来调用这个 API。
我创建它是因为这个 Web API 是应用程序的一部分,它将连接到另一个应用程序。
我创建了一个新的 MVC 项目并在我的控制器中
public ActionResult GetAkontas()
{
IEnumerable<AkontasViewModel> akontas = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:57285/api/");
var responseTask = client.GetAsync("akontas");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = GetReadTask(result);
readTask.Wait();
akontas = readTask.Result;
}
else
{
//Error response received
akontas = Enumerable.Empty<AkontasViewModel>();
ModelState.AddModelError(string.Empty, "Server error try after some time.");
}
}
return View(akontas);
}
问题是我不知道如何调用它 API 控制器,因为我使用 Oracle 数据库,我需要连接到服务器吗?
我创建了模型,但不确定是否需要它
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace AkontasMVCWebApi.Models
{
public class AkontasViewModel
{
public string A_KONTO { get; set; }
public string NAZIV { get; set; }
public string SIFRA_RAD { get; set; }
public string OPSTINA { get; set; }
public string MB { get; set; }
public string ULICA { get; set; }
public string BROJ { get; set; }
public string PBROJ { get; set; }
public string MJESTO { get; set; }
public string PORESKI { get; set; }
public string TRANSAKCIJ { get; set; }
public string INTERNET { get; set; }
public string EMAIL { get; set; }
public string KONTAKT { get; set; }
public string TELEFON { get; set; }
public string FAKS { get; set; }
public DateTime? DAT_UNOS { get; set; }
public string PDVMB { get; set; }
public string VRSTA_KLIJENTA { get; set; }
public string DRZAVA { get; set; }
}
}
这是我第一次使用 Oracle 数据库和 ADO.NET 实体,不太确定如何执行此操作,创建一个将调用(使用)我的 API 的项目
更新
这是我的 Web API 项目
控制器
using System.Linq;
using System.Web.Http;
using System.Web.Http.Description;
namespace AkontasWebApi.Controllers
{
public class AkontasController : ApiController
{
//Ovo je objekat kojem se pristupa kroz bazu
public AkontasEntities db = new AkontasEntities();
// GET: api/Akontas
//Ovo je funkcija koja vraca Listu<> svih AKONTASA iz baze ne vezano po ID-u
[HttpGet]
[Route("api/Akontas")]
public IQueryable<AKONTA> GetAKONTAS()
{
return db.AKONTAS;
}
// GET: api/Akontas/5 -> ovo je routing tacnije putanja kako se koristi ova funkcija
//Ovo je funkcija koja vraca AKONTAS po ID-u
[HttpGet]
[ResponseType(typeof(AKONTA))]
public IHttpActionResult GetAKONTA(string id)
{
AKONTA aKONTA = db.AKONTAS.Find(id);
if (aKONTA == null)
{
return BadRequest("Ne postoji A_KONTO pod tim rednim brojem");
}
return Ok(aKONTA);
}
}
}
索引视图
<br /><br />
<form>
<div class="form-group">
<label>A_KONTO</label>
<input type="text" class="form-control" aria-describedby="AKONTO BROJ" placeholder="Unesite broj AKONOTO" id='AkontasId'>
</div>
<div class="form-group">
<a class="btn btn-primary" id="aKonto" onClick='aKontoSubmit()'>Provjeri</a>
</div>
</form>
<script>
function aKontoSubmit() {
$.ajax({
type: "GET",
URL: "/api/Akontas/GetAKONTA",
data: { id: $('#AkontasId').val() },
contentType: "data/xml; charset=utf-8",
success: function (result) {
window.location.href = "http://localhost:57285/api/Akontas/" + $('#AkontasId').val();
},
error: function () {
alert("Ne postoji AKONTO pod tim rednim brojem");
}
});
}
</script>
【问题讨论】:
-
我有点困惑。您显示的代码是来自您的 MVC 项目还是来自您的 Web API 项目?
-
来自我的 MVC 项目
-
对不起,我也会添加我的 Web API 项目代码。我忘记了
-
那我还有一个问题;你的问题到底是什么? API 是否没有返回数据,或者来自
client.GetAsync(...)的状态码永远不会是成功状态码... -
不,我只是没有获取数据。浏览器正在运行,但我没有得到任何结果
标签: c# asp.net-mvc oracle asp.net-web-api ado.net-entity-data-model