Я пытаюсь опубликовать бронирование автомобиля, и хотя все значения публикуются во время отладки, все равно получаю ошибку.
Я также проверил сеть в инструментах разработчика и все значения, видимые в полезной нагрузке. Но я получаю сообщение об ошибке PricingID, например
Нет элемента ViewData типа IEnumerable с ключом PricingID.
public async Task<IActionResult> Index(int id)
{
ViewBag.v1 = "Rent A Car";
ViewBag.v2 = "Rent A Car Form";
ViewBag.v3 = id;
var client = _httpClientFactory.CreateClient();
var responseMessage = await client.GetAsync("https://localhost:44380/api/Location");
var jsonData = await responseMessage.Content.ReadAsStringAsync();
var values = JsonConvert.DeserializeObject<List<ResultLocationDto>>(jsonData);
List<SelectListItem> values2 = (from x in values
select new SelectListItem
{
Text = x.Name,
Value = x.Id.ToString()
}).ToList();
ViewBag.v = values2;
var responseMessage2 = await client.GetAsync("https://localhost:44380/api/Pricing");
var jsonData2 = await responseMessage2.Content.ReadAsStringAsync();
var pricings = JsonConvert.DeserializeObject<List<ResultPricingDto>>(jsonData2);
List<SelectListItem> values3 = (from x in pricings
select new SelectListItem
{
Text = x.Name,
Value = x.Id.ToString()
}).ToList();
ViewBag.pricing = values3;
return View();
}
Вид:
@model CreateReservationDto
@{
ViewData["Title"] = "Index";
Layout = "~/Views/UILayout/Index.cshtml";
}
<div class = "col-md-12 block-9 mb-md-5">
<form class = "bg-light p-5 contact-form" method = "post">
<h3 class = "alert alert-success">Car Reservation Form</h3>
<br />
<input type = "hidden" asp-for = "CarID" value = "@ViewBag.v3" class = "form-control" placeholder = "Your Car">
<div class = "form-group">
<input type = "text" asp-for = "Name" class = "form-control" placeholder = "Name">
</div>
<div class = "form-group">
<input type = "text" asp-for = "Surname" class = "form-control" placeholder = "Surname">
</div>
<div class = "form-group">
<input type = "text" asp-for = "Email" class = "form-control" placeholder = "Email">
</div>
<div class = "form-group">
<input type = "text" asp-for = "Phone" class = "form-control" placeholder = "Phone">
</div>
<div class = "form-group">
@Html.DropDownListFor(x => x.PricingID, (List<SelectListItem>)ViewBag.pricing, new { @class = "form-control" })
</div>
<div class = "form-group">
@Html.DropDownListFor(x => x.PickUpLocationID, (List<SelectListItem>)ViewBag.v, new { @class = "form-control" })
</div>
<div class = "form-group">
@Html.DropDownListFor(x=>x.DropOffLocationID,(List<SelectListItem>)ViewBag.v,new{@class = "form-control"})
</div>
<div class = "form-group">
<input type = "text" asp-for = "Age" class = "form-control" placeholder = "Age">
</div>
<div class = "form-group">
<input type = "text" asp-for = "DriverLicenseYear" class = "form-control" placeholder = "Driver License Year">
</div>
<div class = "form-group">
<textarea asp-for = "Description" id = "" cols = "30" rows = "7" class = "form-control" placeholder = "Your requests"></textarea>
</div>
<div class = "form-group">
<input type = "submit" value = "Send Reservation" class = "btn btn-primary py-3 px-5">
</div>
</form>
</div>
Я могу опубликовать это с помощью чванства правильно.
@BrandoZhang это не ноль. Он отображается в пользовательском интерфейсе в виде раскрывающегося списка, и когда я отправляю данные, я интересно вижу значение PricingID.
Когда вы сталкиваетесь с этой ошибкой во время первой загрузки этой страницы?
@BrandoZhang Нет. После публикации.
@BrandoZhang Теперь я понял, что когда я меняю порядок раскрывающегося списка с идентификатором ценообразования с помощью PickUpLocationID в части просмотра, то, что интересно, получаю ту же ошибку для идентификатора выбора.
Что такое метод публикации и метод загрузки представления?
Давайте продолжим обсуждение в чате.
Проблема решена!
У меня было свойство статуса в CreateReservationDto, и я обычно заполняю его по умолчанию, поэтому я забыл удалить это свойство в dto.
Судя по сообщению об ошибке, значение value3 равно нулю, что и вызвало проблему. Проверьте ли вы результат ` List<SelectListItem>values3 = (из x в ценах выберите новый SelectListItem { Text = x.Name, Value = x. Id.ToString() }).ToList();` имеет значение null или нет?