You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:02:35