#.net #forms #asp.net-core
Вопрос:
Я пытаюсь создать форму в Razor Pages .NETCore, где будут происходить следующие события:
- Пользователь выбирает дату в окне выбора даты
- На основе этой даты некоторые значения будут заполнены выпадающим списком
- Пользователь выбирает значение из выпадающего списка, и это значение заносится в базу данных
Проблема в том, что при отправке формы значение, выбранное из раскрывающегося списка, равно нулю (хотя в пользовательском интерфейсе отображаются раскрывающиеся значения, которые можно выбрать).
В html
@section Scripts {
<script>
$("#SelectDate").on("change", function () {
var myDate = $(this).val();
$("#select").empty();
$("#select").append("<option value=''>select </option>");
$.getJSON(`?handler=Dateamp;date=${myDate}`, (data) => {
$.each(data, function (i, item) {
$("#select").append("<option value='" "'>" item.value "</option>");
});
});
});
</script>
}
<form method="post">
<div class="form-group">
<label asp-for="SelectDate" class="control-label"></label>
<input asp-for="SelectDate" class="form-control" />
<span asp-validation-for="SelectDate" class="text-danger"></span>
</div>
<select id="select" asp-for="SelectedValue"></select>
<div class="form-group button-position col-md4">
<input type="submit" name="Submit" value="Submit" />
</div>
</form>
В моей модели
[BindProperty]
[DataType(DataType.Date)]
public DateTime SelectDate { get; set; }
[BindProperty(SupportsGet = true)]
public string SelectedValue { get;set; }
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
//here SelectedValue is null
Debug.WriteLine(SelectedValue)
return Redirect(Url.Page(indexPage));
}
//method that puts the values on the dropdown
public IActionResult OnGetDate(DateTime date)
{
//Here I set the values that are going to the dropdown (these are string values)
foreach (var h in myValues)
{
model.Add(new Values
{
Value = h
});
}
return new JsonResult(model);
}
Ответ №1:
Просто измените свой код, например
$("#select").append(""<option value='" item.value "'>" "'>" item.value "</option>");