如何从ASP.NET MVC控制器返回Json

时间:2018-04-10 20:28:56

标签: c# asp.net-mvc asp.net-web-api

我需要填写一些下拉组合,所以我创建一个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结果吗?

0 个答案:

没有答案