簡體   English   中英

ASP.NET Core MVC-在同一視圖中獲取數據和處理404

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM