2016-11-20 46 views
0

我/Views/Movies/Index.cshtml与JSON列表ASP.net MVC

<input type="button" id="getmoviex" value="Get moviex" /> 
<ul id="moviex_list"/> 
<p> 
     Title: @Html.TextBox("SearchTitle") <br /> 
    </p> 

我有

[AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult moviex(string SearchGenre, string SearchTitle, string SearchActor) 
    { 
     var db = new CinemaContext(); 
     db.Configuration.ProxyCreationEnabled = false; 
     var Movie = from m in db.Movie 
        select m; 
     if (!String.IsNullOrEmpty(SearchTitle)) 
     { 
      Movie = Movie.Where(s => s.Title.Contains(SearchTitle)); 
     } 
     return Json(db.Movie.ToList(), JsonRequestBehavior.AllowGet); 
    } 

/Controllers/MoviesController.cs我Javascript.js与

$(document).ready(function() { 
    $('#getmoviex').click(function() { 
     $.getJSON("/Movies", null, getmoviex); 
    }); 
}); 

我正确写过/电影吗?或者这应该是/ Views/Movies?

function getmoviex(moviex) { 
    $("#moviex_list").text(""); 
    $.each(moviex, function (i) { 
     $("#moviex_list").append("<li>" + this + "</li>"); 
    }); 
} 

如何从我的查询中显示信息或列表信息?或查看有错误的输出?

回答

2

首先确保您点击按钮不会触发对服务器的请求。预防默认行为是一种标准的做法:

$('#getmoviex').click(function (event) { 
    $.getJSON("/Movies", null, getmoviex); 
    event.preventDefault(); 
}); 

至于URL,它不应该是查看,而是采取行动。你的动作是电影和控制器是电影,所以

$.getJSON("/Movies/moviex", null, getmoviex); 

其余的看起来很好,所以应该这样做。

+0

感谢。我试试$(document).ready(function(){('#getmoviex')。click(function(event){.getJSON(“/ Movies/moviex”,null,getmoviex); event.preventDefault (); }); }); //但这不起作用 – ifooi

+0

但这不起作用 - ifooi 17分钟前 – ifooi

+0

@ifooi,错误? – Andrei

1

你需要传递你的参数以及url(GET)。 像这样的东西可以工作:

$('#getmoviex').click(function(event) { 
 
    event.preventDefault(); 
 
    $.getJSON("/Movies/moviex?SearchGenre=yuorgenre&SearchTitle=Cal&SearchActor=youractor", function(moviex) { 
 
     var lis; 
 
     //please check the console 
 
     console.log(moviex); 
 
     $.each(moviex, function(b) { 
 
      lis += "<li id='" + b.Id + "'>" + b.Title + "</li>"); 
 
     }); document.getElementById("moviex_list").innerHTML += lis; 
 
    }); 
 
});

为了避免序列化你可以使用循环引用:

if (String.IsNullOrEmpty(SearchTitle)) { 
 
    return View("Error"); 
 
} 
 

 
var db = new CinemaContext(); 
 
var Movie = (from m in db.Movie 
 
      Where m.Title.Contains(SearchTitle) 
 
      select new { 
 
      Id = m.MovieID, 
 
      Title = m.Title // can add more properties 
 
      }).ToList(); 
 

 
return Json(Movie, JsonRequestBehavior.AllowGet);

+0

我已经为电影写了查询,并且我为json创建了moviex。 – ifooi

+0

但这不起作用 - ifooi 17分钟前 – ifooi

+0

哪部分不起作用? 您的'电影'控制器中的'moviex'方法是否被触发? - 尝试在方法中设置断点或尝试运行你的项目,然后在浏览器中地址栏编辑类似于 'localhost:xxxx/Movies/moviex?SearchGenre = yuorgenre&SearchTitle = a&SearchActor = youractor'并查看返回结果 – RizkiDPrast