【解決方法】挿入データ送信後、エラー オブジェクト参照がオブジェクトのインスタンスに設定されていません。 model.usermodel.branches で?

プログラミングQA


私は MVC カミソリ ページ asp.net core 7 に取り組んでいます。 同じページにデータを送信して挿入した後、成功メッセージを表示できません。

エラーが発生します

System.NullReferenceException: ‘オブジェクト参照がオブジェクトのインスタンスに設定されていません。’
Model.userModel.Branches でエラーが発生

期待される結果は、データの挿入が成功した後、送信ボタンをクリックした後に成功メッセージが表示されることです

データが挿入され、このエラーnull参照例外が表示されます

このエラーを解決するにはどうすればよいですか?

私が試したこと:

public class AddUserModel : PageModel
    {
        [BindProperty]
        public AddUserViewModel userModel { get; set; }
        [BindProperty]
        public UC.ADC.Core.Entities.SQL.User  User { get; set; }
        public string SuccessMessage { get; set; }
public AddUserModel(ADCContext db,OracleContext ora_db2)
        {
            
             _db = db;
            userModel = new AddUserViewModel();
        }
     public async Task<IActionResult> OnPost()
            {
                if (ModelState.IsValid)
                {
                    await _db.User.AddAsync(User);
                    await _db.SaveChangesAsync();
                    SuccessMessage = "Form submitted successfully!";
                    return Page();
                    
    
                }
                
            }
    public void OnGet()
            {
                userModel.Branches  = _db.Branch.ToList();
             }
  }
on adduser.cshtml

@page "/AddUser"
<form method="post">
       

        <div class="form-group row">
            <label for="branch-select" class="col-sm-1 col-form-label" style="font-size:15px;font-family: 'Open Sans', sans-serif;font-weight: bold;">Branch</label>
            <div class="col-sm-3">
                <select id="branch-select" asp-for="User.iBranchCode" class="form-control" style=" margin-left:10px;font-size:15px;font-family: 'Open Sans' , sans-serif;font-weight: bold;">
                    <option value="">-- Select Branch --</option>
                 
                     @foreach (var branch in Model.userModel.Branches)
                    {
                        <option value="@branch.iBranchCode">@branch.vBranchDesc</option>
                    }
                </select>
            </div>
        </div>
<div class="form-group row" style="margin-left:200px;font-size:15px;font-family: 'Open Sans' , sans-serif;font-weight: bold;">
            <button type="submit" class="col-sm-1 btn btn-primary">Submit</button>
           
        </div>
</form

解決策 1

これは、私たちが最もよく聞かれる問題の 1 つであり、私たちが最も答えられない問題でもありますが、あなた自身が最も答えられる問題です。

エラーの意味を説明しましょう。変数、プロパティ、またはメソッドの戻り値を使用しようとしましたが、null が含まれています。これは、変数にクラスのインスタンスがないことを意味します。
ポケットのようなものです。シャツにポケットがあり、ペンを入れるのに使用します。 ポケットに手を入れてペンがないことに気づいたら、紙に自分の名前を書くことはできません。 空のポケットはヌル値 (ここにはペンがありません!) を与えているので、ペンを取り出したら通常行うことは何もできません。 なぜそれは空ですか? それが問題です – 今朝家を出るときにペンを手に取るのを忘れたのかもしれませんし、昨夜脱いだときに昨日のシャツのポケットにペンを忘れたのかもしれません.

私たちはそこにいなかったのでわかりません。さらに重要なことに、あなたのシャツも見えず、ましてやポケットに何が入っているかもわかりません!

コンピューターに戻ると、あなたは同じことを何らかの形で行っています。そして、あなたのコードを見ることはできません。
しかし、それは可能です。ここでは、Visual Studio が役に立ちます。 デバッガーでプログラムを実行し、失敗すると、問題が見つかった行が表示されます。 次に、そのさまざまな部分を調べて、どの値が null であるかを確認し、コードを振り返ってその理由を見つけることができます。 したがって、エラー行を含むメソッドの先頭にブレークポイントを置き、プログラムを最初からもう一度実行します。 今回は、デバッガーはエラーが発生する前に停止し、コードをステップ実行して値を確認することで、何が起こっているかを調べることができます。

しかし、それはできません。あなたの完全なコードを持っていません。もし持っていたとしても、それをどのように使用するかわかりません。あなたのデータもありません。 試してみて、どれだけの情報が得られるか見てみましょう!

コメント

タイトルとURLをコピーしました