MVC 4控制器JsonResult

时间:2013-05-22 07:54:17

标签: c# ajax asp.net-mvc json

我在MVC中有一个与我的控制器有关的问题。 我想使用foreach在我的JsonResult GetAfmeldingen内循环。

但我所做的不会进入我的内心 这是我现在看起来的代码

public JsonResult GetJsonAfmeldingen()
{
    if (Functions.HasLoginCookie())
    {
        if (Models.Taken.ActID > 0)
        {
            foreach (var item in Talent.Afmelding.Fetch(null, Models.Taken.ActID, null, null))
            {               
                return Json(item.Participant.CompleteName, JsonRequestBehavior.AllowGet);
            }

            return Json("Empty ?? ID = " + Models.Taken.ActID + "", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(null, JsonRequestBehavior.AllowGet);
        }
    }
    else
    {
        return Json(null, JsonRequestBehavior.AllowGet);
    }
}

在此示例中,当列表中的第一条记录命中时,我返回JsonResult。我看看它是否有效,但事实并非如此。身份证已经填满,但我在这里错过了什么? 我是MVC的新手。

2 个答案:

答案 0 :(得分:2)

这将在foreach的第一个循环中终止,这是你想要的吗?

            foreach (var item in Talent.Afmelding.Fetch(null, Models.Taken.ActID, null, null))
            {

                return Json(item.Participant.CompleteName, JsonRequestBehavior.AllowGet);
            }

答案 1 :(得分:2)

这可能是行不通的,因为你不能进入foreach。

public JsonResult GetJsonAfmeldingen()
{
    if (Functions.HasLoginCookie())
    {
        //This one is probably not filled.
        if (Models.Taken.ActID > 0)
        {

这可能是一个可能的解决方案:

public JsonResult GetJsonAfmeldingen(int actID)
{
    if (Functions.HasLoginCookie())
    {
        //Now it is filled if you post it correctly.
        if (actID > 0)
        {

之后尝试在较小的范围内测试它。尝试在此行上设置断点并查看列表是否已填充。

    var listAfmeldingen = Talent.Afmelding.Fetch(null, Models.Taken.ActID, null, null);
    //Breakpoint here
    int count = listAfmeldingen.Count;
    foreach (var item in listAfmeldingen)
    {   
        return Json(item.Participant.CompleteName, JsonRequestBehavior.AllowGet);
    }

看看你的路由,我用这个:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );