从MVC View调用Json

时间:2013-09-16 15:15:27

标签: c# asp.net-mvc-3

我不确定我在这里做错了什么。

我有一个列表,我正在创建超链接。我需要首先将用户指向正确的页面,所以我做了一个getJson。

我的.cshtm文件中有以下代码:

            $.getJSON('/Home/GetLocType', { "locId": loc.locId },  
              function(result) {   
                result = Json.stringify(result);                


             if(result == '1')                     
             {

                $('<li><a id=' + loc.locId + ' href="/DataEntry"  rel="external">' + loc.locName + '</a></li>').appendTo("#btnList");

             }
             else
             {
                $('<li><a id=' + loc.locId + ' href="/DataEntry/PForm"  rel="external">' + loc.locName + '</a></li>').appendTo("#btnList");                    
             }
           });

我在控制器中有以下代码:

    private JsonResult GetLocType(int locId)
    {
        int locationId = Convert.ToInt32(locId);            
        var result = db.Locations.Where(a => a.LocID == locationId).Select(a => a.TypeId);
        return Json(result);
    }

我面临的问题是永远不会调用Json方法。

1 个答案:

答案 0 :(得分:6)

您的控制器方法声明为private - 因此无法访问。

将其更改为public

其次,您应该激活allow get - 默认情况下未设置原因的详细信息请参阅 - Why is JsonRequestBehavior needed?

public JsonResult GetLocType(int locId)
{
    int locationId = Convert.ToInt32(locId);            
    var result = db.Locations.Where(a => a.LocID == locationId).Select(a => a.TypeId);
    return Json(result, JsonRequestBehavior.AllowGet);
}