我需要填写一些下拉组合,所以我创建一个WebApi并且工作正常。
[HttpGet]
[Route("api/States/FindMunicipalityByStateID")]
public IHttpActionResult FindMunicipalityByStateID(String StateID)
{
List<MunicipalityModel> municipality = db.municipality.Where(p => p.StateID == StateID)
.Select(p => new MunicipalityModel
{
Name = p.Name,
MunicipalityID = p.MunicipalityID
})
.OrderBy(p => p.Name)
.ToList();
if (municipality == null)
{
return NotFound();
}
return Ok(municipality);
}
我使用JQuery.getJSON
阅读,也可以正常使用:
$('#StateID').change(function () {
var URL = 'http://myServer/myProject/api/States/FindMunicipalityByStateID?StateID=' + $('#StateID').val();
$.getJSON(URL, function (data) {
var items = '<option>Seleccione Municipio</option>';
$.each(data, function (i, municipality) {
items += "<option value='" + municipality.WeekID + "'>" + municipality.Name + "</option>";
});
$('#MunicipalityID').html(items);
});
});
现在我想要做同样的事情但是我的EF向导已经有一个ASP.NET MVC控制器用于该类,所以我尝试在那里做同样的事情。
我有3个错误:
类型或命名空间名称&#39; IHttpActionResult&#39;找不到(你错过了使用指令或汇编引用吗?)
名称&#39; NotFound&#39;在当前上下文中不存在
名称&#39; Ok&#39;在当前上下文中不存在
可以使用System.Web.Http.IHttpActionResult解决第一个错误。
因为无法添加using System.Web.Http;
,因为与using System.Web.Mvc;
我看到了几个相关的问题:
与此IN MVC6 return Json(rows, JsonRequestBehavior.AllowGet) ISSUE一样,但这会使用JSonResult
这一个How to return JSON in a ASP.NET MVC/web controller?,但这使用了Task<ActionResult>
当找不到对象时,既不处理这种情况。
问题:
有没有理由WebApi控制器不需要将结果转换为JSON但是ASP.NET MVC控制器呢?因为我的jQuery可以读得很好。
我可以将WebApi代码转换为ASP.NET MVC还是需要使用其中一个示例?
我需要Not Found
结果吗?