提交创建Boat表单时触发System.NullReferenceException问题求助
提交表单创建Boat时触发System.NullReferenceException错误求助
每次提交表单创建新Boat实例时,都会抛出System.NullReferenceException: 'Object reference not set to an instance of an object.'错误。以下是相关代码:
Boat模型
using SQLite; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MauiAVDApp2.Models { public class Boat { [PrimaryKey, AutoIncrement] public int? BoatId { get; set; } public string? BoatName { get; set; } public string? BoatDescription { get; set; } public string? BoatCity { get; set; } public BoatType BoatType { get; set; } public string? BoatManufacturer { get; set; } public string? BoatModel { get; set; } public string? BoatImage { get; set; } public int? BoatSeats { get; set; } public double? BoatPrice { get; set; } public Boolean? BoatWithSkipper { get; set; } public Boolean? BoatWithLicense { get; set; } public double? BoatLatitude { get; set; } public double? BoatLongitude { get; set; } public double? BoatDistance { get; set; } //public Host BoatHost { get; set; } } }
BoatService
using MauiAVDApp2.Models; using SQLite; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MauiAVDApp2.Services { internal class BoatService : IBoatService { private SQLiteAsyncConnection _dbConnection; public BoatService() { } private async void SetupDb() { if (_dbConnection == null) { string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "BoatApplication.db3"); _dbConnection = new SQLiteAsyncConnection(dbPath); await _dbConnection.CreateTableAsync<Boat>(); } } public async Task<int> AddBoat(Boat boat) { return await _dbConnection.InsertAsync(boat); } public async Task<int> DeleteBoat(Boat boat) { return await _dbConnection.DeleteAsync(boat); } public async Task<List<Boat>> GetBoatListAsync(Boat boat) { var boatList = await _dbConnection.Table<Boat>().ToListAsync(); return boatList; } public async Task<int> UpdateBoat(Boat boat) { return await _dbConnection.UpdateAsync(boat); } } }
IBoatService
using MauiAVDApp2.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MauiAVDApp2.Services { internal interface IBoatService { Task<List<Boat>> GetBoatListAsync(Boat boat); Task<int> AddBoat(Boat boat); Task<int> UpdateBoat(Boat boat); Task<int> DeleteBoat(Boat boat); } }
Blazor组件
@page "/add-boat" @using MauiAVDApp2.Services @using MauiAVDApp2.Models @inject IBoatService boatService <h3>Add Boat</h3> <div class="container"> <div class="row"> <form @onsubmit="FormSubmit"> <div class="mb-3"> <label for="exampleInputName1" class="form-label">Name:</label> <input type="text" class="form-control" id="exampleInputName1" placeholder="Bautista" aria-describedby="nameHelp" @bind="boat.BoatName"> </div> <div class="mb-3"> <label for="form-select" class="form-label">Choose boat type</label> <select class="form-select" id="form-select" aria-label="Default select example" @bind="boat.BoatType"> <option value="0">Choose your boat type</option> @foreach (var boatType in Enum.GetValues(typeof(BoatType))) { if ((int)boatType == (int)boat.BoatType) { <option value="@((int)boatType)" selected>@boatType</option> } else { <option value="@((int)boatType)">@boatType</option> } } </select> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Description:</label> <input type="text" class="form-control" id="exampleInputDescription1" placeholder="Bestes boat ever" @bind="boat.BoatDescription"> </div> <div class="mb-3"> <label for="exampleInputCity1" class="form-label">City:</label> <input type="text" class="form-control" placeholder="Amsterdam" id="exampleInputCity1" @bind="boat.BoatCity"> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Manufacturer:</label> <input type="text" class="form-control" placeholder="Yamaha" id="exampleInputDescription1" @bind="boat.BoatManufacturer"> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Model</label> <input type="text" class="form-control" placeholder="GXR" id="exampleInputDescription1" @bind="boat.BoatModel"> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Image</label> <input type="text" class="form-control" placeholder="https//:www.google.com/ray-bautista" id="exampleInputDescription1" @bind="boat.BoatImage"> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Seats</label> <input type="number" class="form-control" placeholder="3" id="exampleInputDescription1" @bind="boat.BoatSeats"> </div> <div class="mb-3"> <label for="exampleInpuDescription1" class="form-label">Price</label> <input type="number" class="form-control" placeholder="3.00" id="exampleInputDescription1" @bind="boat.BoatPrice"> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckChecked" @bind="boat.BoatWithSkipper"> <label class="form-check-label" for="flexSwitchCheckChecked">With Skipper</label> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckChecked" @bind="boat.BoatWithLicense"> <label class="form-check-label" for="flexSwitchCheckChecked">Customer needs license</label> </div> <button type="submit" class="btn btn-primary mt-3 d-block">Submit</button> </form> </div> </div> @code { Boat boat = new Boat(); private async void FormSubmit() { var response = await boatService.AddBoat(boat); if (response > 0) { boat.BoatSeats = 0; boat.BoatPrice = 0.00; boat.BoatWithLicense = boat.BoatWithSkipper = false; boat.BoatCity = boat.BoatManufacturer = boat.BoatImage = boat.BoatDescription = boat.BoatModel = boat.BoatName = string.Empty; await App.Current.MainPage.DisplayAlert("form submit invoked", "form submitted", "OK"); } else { await App.Current.MainPage.DisplayAlert("Boat was not created", "Something went wrong, try again", "OK"); } } }
我曾查阅过System.NullReferenceException: 'Object reference not set to an instance of an object.'相关问题,但未找到表单提交场景下的解决方案,特此求助,感谢各位帮助!
内容的提问来源于stack exchange,提问作者magicalassembler
相关产品推荐
相关产品推荐

