ASP.NET MVC视图模型变更后无法更新问题排查
放射科医生视图下拉框选择后表格数据不显示且AJAX报500错误
放射科医生视图首次加载正常,下拉框已填充数据。选择医生后,表格本该显示对应医生的两个字段值,但始终显示为空字符串和0。尝试调用Modelstate.Clear()无效。
后续补充:触发下拉框变更事件时,AparcarGET方法已被正常调用,且ViewModel中的数据正确,但AJAX请求返回500错误。将请求方式改为GET并在Startup.cs中配置CORS后,问题仍未解决。
视图代码
@inject IStringLocalizer<SharedResources> ViewLocalizer @model RadiologistModel @{ ViewData["Title"] = ViewLocalizer["Page.Radiologists.Title"]; } <div class="container-fluid"> <div class="row justify-content-center"> <h1>@ViewLocalizer["Page.Radiologists.Title"]</h1> </div> <div class="row"> @Html.DropDownListFor(m => m.Users, new SelectList(Model.Users, "Usuarioid", "NombreApellidos", Model.Users.First().Usuarioid), new { style = "width: 250px;" }) <table class="table"> <thead> <tr> <th scope="col">#</th> <th scope="col">Nombre</th> <th scope="col">Aparcar</th> </tr> </thead> <tbody> <tr> <th scope="row">1</th> <td>@Model.rad.UsuarioNombre</td> <td>@Model.rad.CantidadPruebasAparcar</td> </tr> </tbody> </table> </div> </div>
视图模型代码
public class RadiologistModel { // 用户集合 public ICollection<UsuarioDTO> Users { get; set; } // 放射科医生停车相关数据 public RadiologoAparcarDTO rad { get; set; } }
控制器代码
namespace xxx { /// <summary> /// 放射科医生控制器 /// </summary> [Authorize] public class RadiologistsController : BaseController { public RadiologistsController(IRISAPI_Client client, IStringLocalizer<SharedResources> stringLocalizer) : base(client, stringLocalizer) { } public async Task<IActionResult> Index() { var identity = User.Identity; if (identity != null) { var authToken = ((ClaimsIdentity)identity).FindFirst(ClaimTypes.Authentication)?.Value; if (authToken != null) { _client.SetBearerToken(authToken); var radiologistModel = new RadiologistModel { Users = await _client.UsuariosAllAsync(), rad = new RadiologoAparcarDTO() }; return View(radiologistModel); } } return View(); } public async Task<IActionResult> AparcarGET(int usuarioId) { RadiologistModel rad; var authToken = User.Identity.GetAuthToken(); if (authToken != null) { _client.SetBearerToken(authToken); var aparcar = await _client.AparcarGETAsync(usuarioId); ModelState.Clear(); rad = new RadiologistModel { Users = await _client.UsuariosAllAsync(), rad = aparcar }; return View(rad); } return View(); } public async Task<IActionResult> AparcarPUTAsync(int usuarioId, int cantidadPruebasAparcar) { var authToken = User.Identity.GetAuthToken(); if (authToken != null) { _client.SetBearerToken(authToken); var rad2 = new GuardarRadiologoAparcarDTO { CantidadPruebasAparcar = cantidadPruebasAparcar }; await _client.AparcarPUTAsync(usuarioId, rad2); return View("Success"); } return View(); } } }
jQuery代码
$("#Users").on('change', function () { var userId = $('#Users').val(); $.ajax({ type: "POST", url: "/Radiologists/AparcarGET", dataType: "json", data: { usuarioId: userId }, success: function (data) { debugger; alert(data); }, failure: function (data) { alert('哎呀,出问题了'); } }); });
内容的提问来源于stack exchange,提问作者Diego Perez
相关产品推荐
相关产品推荐

