Visual Studio编辑.cshtml文件时按一次键输入4个字符问题求助
Visual Studio 2022 Razor页面输入异常:单次按键输入4个相同字符
我使用Visual Studio 2022 V17.2.5(社区版)、ASP.NET Framework V4.6.1开发Razor页面时遇到异常:打开.cshtml文件初期一切正常,但输入若干字符后,按一次按键会输入4个相同字符。示例如下:
已将该问题作为bug反馈给微软,想了解是否有其他开发者遇到过相同问题,以及对应的解决或临时规避方案。
以下是出现异常的完整.cshtml文件代码:
@model CataRefacciones @using SCORE.Helpers @using SCORE.Models @using X.PagedList @{ string idTipos = "ListaTipos"; var listaTipos = (IEnumerable<SelectListItem>)ViewBag.ListaDeTipos; string idCodigos = "ListaCodigos"; var listaCodigoSAT = (IEnumerable<SelectListItem>)ViewBag.ListaDeCodigos; string idMarcas = "ListaMarcas"; var listaMarcas = (IEnumerable<SelectListItem>)SCOREEntitiesHelper.ListaMarcasRefacciones(); var listaUniAlmacenaje = (IEnumerable<SelectListItem>)ViewBag.ListaUniAlmacenaje; string CodigoSAT = Model.CODSAT.ToString(); bool esVistaCreacion = ViewBag.AccionStd == CataAcciones.AccionesStd.Agregar; // Necesitamos guardar la lista de modelos, guardaremos un string con los ids separados por coma... ViewBag.nameListaModRef = Html.FieldName(model => model.ListaIdsModelos); } @Html.HiddenFor(model => model.ListaIdsModelos) @Html.HiddenFor(model => model.IDREFACCION) @Html.HiddenFor(model => model.IDPROVEEDOR) @*Identifica al proveedor por defecto*@ @Html.HiddenFor(model => model.IDPRESENTACIONDEFECTO) @*Identifica a la presentación por defecto*@ <div class="form-horizontal"> <div class="container-fluid"> @Html.ValidationSummary(false, string.Empty, new { @class = "text-danger" }) <h6>General</h6> @{ object additionalViewData = new { htmlAttributes = new { @class = "form-control", @onchange = string.Format("ValidarCodigo(this, {0})", Model.IDREFACCION) } }; } <div class="row"> @Html.EtiquetaYControl(model => model.CODIGO, "col-lg-2 coooollll----mmmmdddd----1111", additionalViewData) @Html.EtiquetaYControl(model => model.TIPOPRODUCTO, "col-lg-2", additionalViewData) @Html.EtiquetaYTextArea(model => model.DESCRIPCION, "col-lg-5") @Html.EtiquetaYControl(model => model.ACTIVO, "col-md-1 col-xs-4") @Html.EtiquetaYControl(model => model.ORIGINAL, "col-md-1 col-xs-4") @Html.EtiquetaYControl(model => model.AccesorioBool, "col-md-1 col-xs-4") </div> <div class="row"> @Html.EtiquetaYLista(model => model.TIPOACCESORIO, listaTipos, "col-md-2", new { @class = "form-control", @id = idTipos }) @Html.EtiquetaYLista(model => model.IDUNIDADALMACENAJE, listaUniAlmacenaje, "col-md-2", new { @onchange = "", @class = "form-control combobox captura-estricta" }, "Unidad de control de inventario para esta refacción") @Html.EtiquetaYLista(model => model.MarcaSinEspacios, listaMarcas, "col-md-2", new { @class = "form-control combobox ancho-sin-limite", @id = idMarcas }) @Html.EtiquetaYLista(model => model.CodSatString, listaCodigoSAT, "col-md-2", new { // Marcamos el campo como requerido en este punto. No lo hacemos en el modelo de refacción // ya que esto generaría errores durante procesos de guardado automáticos (como lo es // la configuración de presentaciones y unidad de almacenaje desde pantalla de detalles) @class = "form-control combobox ancho-sin-limite", @id = idCodigos, @onchange = "javascript:onChangeCodSAT(g_refaccion)" }, null, "requerido") @Html.EtiquetaYTextArea(model => model.DESCODSAT, "col-md-4") </div> <br /> @* Pills de selección de tabs. *@ <ul class="nav nav-tabs" role="presentation"> <li class="active"> <a href="#sucursales" data-toggle="tab"> <span class="glyphicon glyphicon-home" title="Sucursales" rel="tooltip"></span> <span class="hidden-sm hidden-xs">Sucursales</span> </a> </li> <li> <a href="#proveedores" data-toggle="tab"> <img src="~/images/proveedores.png" height="20" title="Proveedores" rel="tooltip" /> <span class="hidden-sm hidden-xs">Proveedores</span> </a> </li> <li> <a onclick="javascript:ClickTabModelos();" href="#modelos" data-toggle="tab"> <img src="~/images/modelos.png" height="20" title="Modelos" rel="tooltip" /> <span class="hidden-sm hidden-xs">Modelos</span> </a> </li> <li> <a href="#similares" data-toggle="tab"> <img src="~/images/similares.png" height="20" title="Similares" rel="tooltip" /> <span class="hidden-sm hidden-xs">Similares</span> </a> </li> <li> <a href="#kardex" onclick="g_refaccion.actualizarTablaKdx()" data-toggle="tab"> <img src="~/images/kardex.png" height="20" title="Kárdex" rel="tooltip" /> <span class="hidden-sm hidden-xs">Kárdex</span> </a> </li> </ul> <br /> <div class="tab-content"> <div id="sucursales" class="tab-pane active"> @Html.Partial("Edicion/EditSeccionSucursales") </div> <div id="proveedores" class="tab-pane"> @* Proveedores *@ <div id="relacion_prov_ref"> @Html.Partial("RefaccionProveedor", Model.rlnProveedores_Refacciones.OrderBy(r => r.CataProveedores.RAZONSOCIAL).ToPagedList(1, 10)) </div> @*Sección de modales*@ @Html.Partial("RefaccionProveedorModalesYRegistros") </div> <div id="modelos" class="tab-pane"> @* Modelos *@ @Html.Partial("RefaccionModelo", Model.ParaModRefacciones.ToPagedList(1, 100)) @if (!esVistaCreacion) { <div id="modelos_en_OT"> @*Para los modelos en ordenes de trabaja cargaremos un mensaje de espera, la sección cargará una vez renderizada la pantalla*@ <div class="container"> <div class="alert alert-info"> <h5>Cargando modelos en ordenes de trabajo...</h5> </div> </div> </div> } </div> <div id="similares" class="tab-pane"> @Html.Partial("Edicion/EditRefaccionesSimilares", Model) </div> <div id="kardex" class="tab-pane"> @Html.Partial("KardexRefaccionSucursal", Model) </div> </div> </div> </div>
已验证的解决/临时规避方案
- 升级Visual Studio版本:该输入异常是17.2.x版本的已知bug,微软在17.3及以上版本中修复了此问题,升级到最新稳定版是最根本的解决办法。
- 回退到旧版Razor编辑器:打开VS的
工具 → 选项 → 环境 → 预览功能,取消勾选"使用新版Razor编辑器",重启VS后即可切换到旧版编辑器,避免输入异常。 - 关闭实时编译功能:进入
工具 → 选项 → 文本编辑器 → ASP.NET Core → Razor语言,取消勾选"启用实时编译",可临时缓解该问题。 - 清理项目与VS缓存:删除项目的bin、obj文件夹;删除VS缓存目录
%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_xxx\ComponentModelCache(xxx为你的VS实例ID),重启VS后重新生成项目。 - 临时使用外部编辑器:若上述方案均无效,可临时使用VS Code等外部编辑器编辑.cshtml文件,避开VS的输入异常问题。
内容的提问来源于stack exchange,提问作者Saul Muñoz Garcia
相关产品推荐
相关产品推荐

