#asp.net-mvc
#asp.net-mvc
Вопрос:
На мой взгляд, я создаю форму, в которой пользователь выбирает страну из списка стран.Я получаю эту ошибку о том, что ссылка на объект не установлена для экземпляра объекта. Есть ли что-то, чего мне не хватает?
@Html.DropDownListFor(
x => x.selectedCountryId,
new SelectList(Model.ListOfCountries, "Value", "Text"),
"-- please select a Country--",
new { id = "ddlCountry", @class = "form-control" }
)
@Html.ValidationMessageFor(x => x.selectedCountryId)
Модель
[Required]
public int? selectedCountryId{ get; set; }
Ошибка
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Web.Mvc.WebViewPage<TModel>.Model.get returned null.
Метод действия
public ActionResult Create(RequestFormViewModel model)
{
if (!ModelState.IsValid)
{
}
return View(TemplateName, "");
public ActionResult Index()
{
RequestFormViewModel result = new RequestFormViewModel ();
try
{
var FormInfo = GetFormInfo();
if (FormInfo != null)
{
result = FormInfo;
}
}
catch (Exception e)
{
}
return View(TemplateName, result);
}
Комментарии:
1. ваша модель равна null или ListOfCountries равно null это поможет вам c-sharpcorner.com/UploadFile/4d9083 /…
2. @mohamed-adelI Я получаю это при отправке формы, она отлично загружает элемент управления
3. пожалуйста, поделитесь своими методами действий
4. методы действия принимают объект модели
5. Уважаемый у вас должно быть 2 метода действий 1 для HttpGet и еще один для HttpPost пожалуйста, поделитесь методом действия HttpGet, чтобы помочь вам
Ответ №1:
Ваши методы действий должны быть такими, как показано ниже
[HttpGet]
public IActionResult Create()
{
//Way 1
RequestFormViewModel model = new RequestFormViewModel();
model.ListOfCountries = //Select from DB or Whatever
return View(model);
//Way 2
ViewBag.ListOfCountries = //Select from DB or Whatever
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RequestFormViewModel model)
{
if (ModelState.IsValid)
{
}
return View(model);
}
и для просмотра, если вы будете использовать способ 1, поэтому вам нужно добавить ListOfCountries как [NotMapped] в вашу модель или создать Dto для этого представления
для способа 2, вам нужно привязать выпадающий список из ViewBag вместо использования ListOfCountries в качестве свойства
Комментарии:
1. Я получаю HTTP-ошибку 404.0 — не найден с этой новой логикой
2. Не могли бы вы, пожалуйста, поделиться обновленным представлением и методами действий?