MVC视图冻结

时间:2011-03-17 18:28:40

标签: asp.net-mvc-3

我有一个奇怪的问题。我有控制器创建和编辑视图。一切正常,但(例如)如果我没有输入值,验证 @ Html.ValidationSummary(False)会返回消息错误。问题是当出现错误时,因为浏览器冻结并消耗大量资源(内存),但等待4或5分钟后,视图将使用数据和验证消息进行呈现。

服务器是:Windows 2003 Standard Edition,SQLServer 2008 Standard Edition,IIS6.0。 在发展环境中,这是同样的问题。 我正在使用带有剃须刀和MVC3的VS2010 SP1。这个问题也出现在带有aspx和MVC2的VS2008 SP1中。

有人知道它发生了什么吗?

的问候。


因为它减少代码可能会有错误,但原始它没关系。当然所有的javascript和jquery调用都会退出

修改视图

@ModelType iSAM.Certificados

@Code
ViewData("Title") = "Edit"
Layout = "~/Views/Shared/CertificadosLayout.vbhtml"
End Code

@section Contenido
@Using Html.BeginForm()
    @<fieldset>
        <legend></legend>
        <br />

        <fieldset>
            <legend>Datos Generales</legend>
            <table>
                <tr>
                    <td style="border-width:0px; border-style:solid">
                        @Html.LabelFor(Function(Model) Model.IDCertificado)
                        @Html.TextBoxFor(Function(Model) Model.IDCertificado, New With {.readonly = "readonly", .style = "width:90px; text-align:center", .class = "letraingreso"})
                    </td>
                    <td style="width:20px"></td>
                    <td style="border-width:0px; border-style:solid">
                        @Html.LabelFor(Function(Model) Model.IDPoliza)
                        @Html.DropDownListFor(Function(Model) Model.IDPoliza, Nothing, New With {.style = "width:200px; visibility:visible", .class = "letraingreso"})
                    </td>
                </tr>
                <tr>
                    <td style="border-width:0px; border-style:solid">
                        @Html.LabelFor(Function(Model) Model.IDCampaña)
                        @Html.DropDownListFor(Function(Model) Model.IDCampaña, Nothing, New With {.style = "width:250px; visibility:visible", .class = "letraingreso"})
                    </td>
                    <td style="width:20px"></td>
                    <td style="border-width:0px; border-style:solid">
                        @Html.LabelFor(Function(Model) Model.IDVigencia)
                        @Html.DropDownListFor(Function(Model) Model.IDVigencia, Nothing, New With {.style = "width:183px; visibility:visible", .class = "letraingreso", .disabled = "disabled"})
                    </td>
                </tr>
            </table>
        </fieldset>
        <br />

        <div id="tabs">
            @*Establece los tabs a ser creados*@
            <ul>
                <li><a href="#fragment-1"><span>Asegurado</span></a></li>
            </ul>

            @*Asegurados*@
            <div id="fragment-1">
                <table>
                    <tr>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.IDAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.IDAsegurado, New With {.readonly = "readonly", .style = "width:80px; text-align:center", .class = "letraingreso"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.IDTipoDocumentoAsegurado)
                            @Html.DropDownListFor(Function(Model) Model.IDTipoDocumentoAsegurado, Nothing, New With {.style = "width:200px; visibility:visible", .class = "letraingreso"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.NumeroDocumentoAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.NumeroDocumentoAsegurado, New With {.onkeyup = "if(this.value.match(/\D/))this.value=this.value.replace(/\D/g,'')", .class = "letraingreso", .style = "width:100px"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.FechaNacimientoAsegurado)
                            @Html.TextBox("FechaNacimientoAsegurado", Format(Model.FechaNacimientoAsegurado, "dd/MM/yyyy"), New With {.maxLength = "10", .onkeyup = "DateFormat(this, this.value, event, false, '3')", .onblur = "DateFormat(this, this.value, event, true, '3')", .style = "width:80px", .class = "letraingreso"})
                            <a href="#"><img src="@Url.Content("~/Images/spacer.gif")" class="imagenfecha" style="border:0" height="16px" width="20px" id="imgFechaNacimientoAsegurado" alt="" /></a>
                            <script type="text/javascript">
                                Calendar.setup(
                                {
                                    inputField: "FechaNacimientoAsegurado",
                                    ifFormat: "%d/%m/%Y",
                                    button: "imgFechaNacimientoAsegurado",
                                    align: "Tl",
                                    singleClick: true
                                });
                            </script>
                        </td>
                    </tr>
                </table>
                <table>
                    <tr>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.NombresAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.NombresAsegurado, New With {.style = "text-transform:uppercase; width:270px", .class = "letraingreso"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.PrimerApellidoAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.PrimerApellidoAsegurado, New With {.style = "text-transform:uppercase; width:182px", .class = "letraingreso"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.SegundoApellidoAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.SegundoApellidoAsegurado, New With {.style = "text-transform:uppercase; width:182px", .class = "letraingreso"})
                        </td>
                    </tr>
                </table>
                <table>
                    <tr>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.IDCiudadAsegurado)
                            @Html.DropDownListFor(Function(Model) Model.IDCiudadAsegurado, Nothing, New With {.style = "width:180px; visibility:visible", .class = "letraingreso"})
                        </td>
                        <td style="width:15px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.DireccionDomicilioAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.DireccionDomicilioAsegurado, New With {.style = "text-transform:uppercase; width:354px", .class = "letraingreso"})
                        </td>
                        <td style="width:20px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.CorreoElectronicoAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.CorreoElectronicoAsegurado, New With {.class = "letraingreso", .style = "width:170px"})
                        </td>
                    </tr>
                </table>
                <table>
                    <tr>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.IDGeneroAsegurado)
                            @Html.DropDownListFor(Function(Model) Model.IDGeneroAsegurado, Nothing, New With {.style = "width:98px; visibility:visible", .class = "letraingreso"})
                        </td>
                        <td style="width:15px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.IDEstadoCivilAsegurado)
                            @Html.DropDownListFor(Function(Model) Model.IDEstadoCivilAsegurado, Nothing, New With {.style = "width:120px; visibility:visible", .class = "letraingreso"})
                        </td>
                        <td style="width:15px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.TelefonoFijoAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.TelefonoFijoAsegurado, New With {.class = "letraingreso", .style = "width:80px", .onkeydown = "javascript:return dFilter (event.keyCode, this, '###-##-####');"})
                        </td>
                        <td style="width:15px"></td>
                        <td style="border-width:0px; border-style:solid">
                            @Html.LabelFor(Function(Model) Model.TelefonoCelularAsegurado)
                            @Html.TextBoxFor(Function(Model) Model.TelefonoCelularAsegurado, New With {.class = "letraingreso", .style = "width:80px", .onkeydown = "javascript:return dFilter (event.keyCode, this, '###-##-####');"})
                        </td>
                    </tr>
                </table>
                <br />
            </div>
        </div>

        <br />
        <fieldset>
            <legend>Observaciones</legend>
            @Html.LabelFor(Function(Model) Model.Observaciones)
            @Html.TextBoxFor(Function(Model) Model.Observaciones, New With {.class = "letraingreso", .style = "width:90%; text-transform:uppercase"})
        </fieldset>
    </fieldset>

    @<div style="display:none; position:absolute; margin:auto; left:0; right:0; text-align:center" id="inprogress">
        <br /><br /><br /><br /><br /><br />
        <img id="inprogress_img" src="@Url.Content("~/Images/loading.gif")" alt="Procesando..." />
        <br />
        Por favor espere mientras su solicitud es procesada...
    </div>

    @<p>
        <input type="submit" value="Guardar" id="cmdGuardar" onclick="return doSubmit()" />
    </p>

    @<div>
        @Html.ActionLink(" ", "ListarCertificadosVehiculos", "CertificadosLayout", New With {.area = ""}, New With {.class = "imgRegresar", .title = "Regresar"})
    </div>
End Using
End Section

类(记住它是减少代码)

Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations

Public Class Certificados
Private varIDCertificado As Long
Private varIDPoliza As Long
Private varNumeroPoliza As Long
Private varIDCampaña As Long
Private varIDVigencia As Long

<DisplayName("Número de Certificado:")> _
Public Property IDCertificado() As Long
    Get
        Return varIDCertificado
    End Get

    Set(ByVal value As Long)
        varIDCertificado = value
    End Set
End Property

<Required(ErrorMessage:="Debe seleccionar la poliza correspondinete")> _
<DisplayName("Número de Poliza:")> _
Public Property IDPoliza() As Long
    Get
        Return varIDPoliza
    End Get

    Set(ByVal value As Long)
        varIDPoliza = value
    End Set
End Property

<DisplayName("Número de Poliza:")> _
Public Property NumeroPoliza() As Long
    Get
        Return varNumeroPoliza
    End Get

    Set(ByVal value As Long)
        varNumeroPoliza = value
    End Set
End Property
End Class

服务(如果返回False,我说的问题出现了)

Public Function EditarCertificadoVehiculo(ByVal parCertificado As CERTIFICADO, ByVal parIDTarjetaCredito As String, ByVal parIDEstado As Long, _
                                          ByVal parLugarTrabajoAsegurado As LUGAR_DE_TRABAJO, ByVal parIDCiudadLugarTrabajo As Long, ByVal parLugarTrabajoPagador As LUGAR_DE_TRABAJO, ByVal parIDCiudadLugarTrabajoPagador As Long, _
                                          ByVal parAsegurado As ASEGURADO, ByVal parIDTipoDocumento As Long, ByVal parIDCiudadNacimiento As Long, ByVal parIDGenero As Long, ByVal parIDEstadoCivil As Long, _
                                          ByVal parPagador As ASEGURADO, ByVal parIDTipoDocumentoPagador As Long, ByVal parIDCiudadNacimientoPagador As Long, ByVal parIDGeneroPagador As Long, ByVal parIDEstadoCivilPagador As Long, _
                                          ByVal parConductor As CONDUCTOR, _
                                          ByVal parConcesionario As CONCESIONARIO, _
                                          ByVal parVehiculo As VEHICULO, ByVal parIDMarca As Long, ByVal parIDModelo As Long, ByVal parIDTipoPlaca As Long, ByVal parIDUsoVehiculo As Long, ByVal parIDColor As Long, _
                                          ByVal parArregloTasas As ArrayList, ByVal parArregloExtras(,) As String) As Boolean Implements IiSAMService.EditarCertificadoVehiculo

    If Not ValidarCertificadoVehiculo(parCertificado, parIDTarjetaCredito, parAsegurado, parLugarTrabajoAsegurado, parPagador, parLugarTrabajoPagador, parVehiculo, parIDTipoPlaca, parConcesionario, parArregloTasas, parIDEstado) Then
        Return False
    End If

    Try
        varRepositorio.EditarCertificadoVehiculo(parCertificado, parIDTarjetaCredito, parIDEstado, _
                                                 parLugarTrabajoAsegurado, parIDCiudadLugarTrabajo, parLugarTrabajoPagador, parIDCiudadLugarTrabajoPagador, _
                                                 parAsegurado, parIDTipoDocumento, parIDCiudadNacimiento, parIDGenero, parIDEstadoCivil, _
                                                 parPagador, parIDTipoDocumentoPagador, parIDCiudadNacimientoPagador, parIDGeneroPagador, parIDEstadoCivilPagador, _
                                                 parConductor, _
                                                 parConcesionario, _
                                                 parVehiculo, parIDMarca, parIDModelo, parIDTipoPlaca, parIDUsoVehiculo, parIDColor, _
                                                 parArregloTasas, parArregloExtras)
    Catch ex As Exception
        varDiccionarioValidacion.AddError("EditarCertificadoVehiculo", ex)
        Return False
    End Try
    Return True
End Function

1 个答案:

答案 0 :(得分:0)

确定。我尝试使用谷歌浏览器和浏览器冻结几分钟,如IE8,但铬没有崩溃。所以我可以看到一个下拉列表加载了数千条记录(可能是100000--我的错误)。

这是更正后的行:

If String.IsNullOrEmpty(Request.Form("NombreLugarTrabajoAsegurado")) Then
            varListado = New SelectList(varServicio.ListarLugaresTrabajoPorNombre("NO DEFINIDO", True, True), "ID_LUGAR_TRABAJO", "NOMBRE_LUGAR_TRABAJO")
        Else
            varListado = New SelectList(varServicio.ListarLugaresTrabajoPorNombre(Request.Form("NombreLugarTrabajoAsegurado"), True, True), "ID_LUGAR_TRABAJO", "NOMBRE_LUGAR_TRABAJO", Request.Form("IDLugarTrabajoAsegurado"))
        End If
        ViewData("IDLugarTrabajoAsegurado") = varListado

也许IE团队需要解决此问题以防止崩溃。 我希望这有助于其他人。