为什么当我调试我的值选项标记html时没有定义



我已经尝试调试以下错误好几个小时了,但没有解决方案JS仍然未定义,但控制器中的id参数有值。请帮忙。我需要它。

这个html代码在我调试的时候,值是未定义的,为什么值没有定义

<select id="cmbTipe" class="form-control">
<option value="-1">Select Jenis</option>
<option value="undefined">undefined</option>
<option value="undefined">undefined</option>
</select>

我的控制器

namespace PerhitunganKeuntunganParkir.Controllers{
public class ParkirController : Controller
{
private readonly JenisKendaraanRepository _jeniskendaraanRepository = null;
private readonly TipeKendaraanRepository _tipekendaraanRepository = null;
private readonly ParkirContext _context = null;
//Dependency Injection
public ParkirController(JenisKendaraanRepository jenisKendaraanRepository, TipeKendaraanRepository tipeKendaraanRepository, ParkirContext context)
{
_jeniskendaraanRepository = jenisKendaraanRepository;
_tipekendaraanRepository = tipeKendaraanRepository;
_context = context;
}
public async Task<ViewResult> GetAllJenis()
{
ViewBag.Jenis = await _jeniskendaraanRepository.GetJenisKendaraan();
return View();
}
public IActionResult LoadTipeC(int jenisId)
{

return Json(_context.TipeKendaraan.Where(s=>s.JenisKendaraanId ==
jenisId).Select(s=> new TipeKendaraanModel{
Id = s.Id,
Tipe=s.Tipe
}).ToList());
}

我的视图

在HTML中,我的级联下拉列表中的值是未定义的,为什么会发生这种情况?JavaScript正在工作,但HTML 中的值未定义

@{
ViewData["Title"] = "Input Form";
@model JenisKendaraanModel
<div class="container">
<form method="post" asp-action="GetAllJenis" asp-controller="Parkir">
<div class="form-group">
<label asp-for="Jenis"></label>
<select id="cmbJenis" class="form-control">
<option value="-1">Select Jenis</option>
@foreach (var jenis in ViewBag.Jenis)
{
<option value="@jenis.Id">@jenis.Jenis</option>
}
</select>
<span asp-validation-for="Jenis" class="text-danger"></span>
</div>
<div class="form-group">
<select id="cmbTipe" class="form-control">
</select>
</div>

<script src="~/lib/jquery/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#cmbJenis').on('change', function () {
var jenisId = $('#cmbJenis option:selected').val();
$.ajax({
type: 'GET',
data: { jenisId: jenisId },
url: '@Url.Action("LoadTipeC","Parkir")',
success: function (result) {
//var tipe = JSON.parse(result);
var s = '<option value="-1">Select tipe</option>';
for (var i = 0; i < result.length; i++) {
s += '<option value="' + result[i].Id + '">' + result[i].Tipe + '</option>';
}
$('#cmbTipe').html(s);
}
});
});
});
</script>
</form>
</div>


经过测试,我发现您的问题可能在于Js。

尝试更改您的代码:

for (var i = 0; i < result.length; i++)
{
s += '<option value="' + result[i].Id + '">' + result[i].Tipe + '</option>';
}

for (var i = 0; i < result.length; i++)
{
s += '<option value="' + result[i].id + '">' + result[i].tipe + '</option>';
}

idtipe第一个字母应该是小写的。

最新更新