[英]ASP.NET Core MVC - Getting data and handling 404 in same view
我对WebForms(我的公司使用)更加熟悉,并且刚刚开始学习MVC。 我遵循了电影教程,并且很难看清如何以自己的方式使用MVC模式。
例如,我的公司经常要求我制作Web应用程序,以从用户那里获取一些输入,在我们的数据库中查找它们,然后将与输入有关的其他一些数据返回给它们,它们都在同一页面上。
使用WebForms,我可以轻松查看数据库是否返回null并在这种情况下显示错误标签。 但是随着MVC像API一样对待数据访问,我看不出如何做同样的事情而不忽略使用正确的404代码。 假设我要看一部电影(我现在故意注释掉了404s):
public class MoviesController : Controller
{
private readonly MovieDBContext _context;
public MoviesController(MovieDBContext context)
{
_context = context;
}
// GET: Movies/Info/Title
public async Task<IActionResult> Info(string title)
{
//if (title == null)
//{
//return NotFound();
//}
var movie = await _context.Movies
.FirstOrDefaultAsync(m => m.Title == title);
// if (movie == null)
// {
// return NotFound();
//}
return Json(movie);
}
然后在视图中:
<h2>App</h2>
<br />
<div class="form-group">
<p>
Price Lookup App
</p>
<br />
<div class="row">
<div class="col-xs-2">
Enter movie title:
</div>
<div class="col-xs-2">
<input type="text" class="form-control" id="title" />
</div>
<div class="col-xs-2">
<input type="submit" class="btn" onclick="getMovie()" />
</div>
</div>
<br />
<div class="row">
<label id="price"></label>
</div>
</div>
<script>
function getMovie() {
var movie = $("#title").val();
if (movie != "") {
$.getJSON("../Movies/Info?title=" + movie, function (response) {
if (response != null) {
$("#price").html(response.price);
}
else {
$("#price").html("Film not found");
}
});
}
else {
$("#price").html("Film not found");
}
}
</script>
从技术上讲,这是可行的,但是我真的不应该这样做。 找不到电影时,我应该提供404代码,对吗? 我只是不知道如何处理获得404响应并像上面一样在同一视图上显示自定义“未找到”消息,因为404会停止执行JS。 谢谢。
您可以使用$ .ajax(ajax调用)或$ .get(获取api调用)。 有成功和错误的组成部分。 您可以在那里处理回应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.