MVC开发的新手,对于我们的项目,我们正在与SQL数据库进行REST通信。就我而言,我有两个控制器, DrugEntriesListController 和 DrugEntryController 。前者源自 Controller 并控制网页视图,而后者源自 ApiController ,并通过存储库类处理RESTful HTTP POST / GET与我们的数据库(教程)我跟着is this one)。
在我的网页中,您可以上传文件(using this tutorial),该文件通过跟踪上传文件的内置请求类路由到DrugEntriesListController。从那里,我可以发送要解析的文件,等等。但是,我的问题是:为了将解析后的数据RESTful上传到数据库,我需要通过DrugEntryController,因为它是一个ApiController并具有HTTP POST / GET电话。问题是,我不知道如何访问它而不从视图控制器或其他文件中实例化新的。
也许我很误解(非常可能),但是ApiController通过DrugEntriesList视图 Index.cshtml 进行交互,这是我当前的代码:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div id="body">
<ul id="drug_entries"></ul>
</div>
@section scripts{
<script type="text/javascript">
$(function ()
{
$.getJSON('/api/DrugEntry', function (drugEntriesJsonPayload)
{
$(drugEntriesJsonPayload).each(function (i, item)
{
$('#drug_entries').append('<li>' > + item.NDC + '</li>');
});
});
});
</script>
}
上传药物数据库的新.CSV文件:
@using (Html.BeginForm ("",
"DrugEntriesList",
FormMethod.Post,
new {enctype="multipart/form-data"}))
{
<input type="file" name="newCSV" /><br />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}
由于我有一堵混乱的乱码,tl; dr是我需要将Controller中收到的信息存入已经存在的ApiController。
答案 0 :(得分:0)
所以,我要陈述宗教答案(这就是我决定编程的方式,而不是最佳实践或事实方式)。
我不使用ApiController
除非;它将由外部第三方调用,或者我正在使用旨在直接针对RESTful服务的第三方框架(Kendo,Knockout)。
在您的具体情况下,您没有理由 使用ApiController。您的代码可能如下所示:
[脚本]
$.getJSON('/DrugEntry/GetList', //...
并[c#]
public class DrugEntryController
{
[HttpPost]
public ActionResult GetList()
{
// blah blah get list
IEnumerable<DrugEntry> drugs = db.GetDrugs();
return this.Json(drugs);
}
}