none
como refrescar el model de una vista

    Pregunta

  • hola, mi aplicacion guarda datos en una tabla, comprueba en la base de datos que estan guardados, pero a la hora de recuperarlos para editar me trae los que habia edidtado, digamos que no se entera de los cambios, aunque en la base de datos estan cambiados, ¿como puedo hacer que refresque los datos?

    mi codigo para la vista es el sisguiente:

    @ModelType PagedList.IPagedList(Of CHJ.InventarioAplicacionesMVC.APP_Aplicacion)
    @Imports  PagedList.Mvc
    @Code
        ViewData("Title") = "Inventario Aplicaciones"
    End Code
    
    <h2>Inventario Aplicaciones</h2>
    
    @Using (Html.BeginForm())
    
        @<fieldset>
            <legend></legend>
            <p>
                @Html.TextBox("searchString", ViewBag.currentFilter, New With {.placeholder = "Texto a Buscar"})
                <input type="submit" value="Buscar" class="boton" />
            </p>
    
            <br />
    
            <input type="submit" name="boton" value="Nueva Aplicacion" class="boton" />
           
    
            <br />
            <br />
    
            <div class="div1">
    
                <table>
                    <tr>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th>
                            @Html.ActionLink("ATA_Nombre", "Index", New With {.sortOrder = ViewBag.order1, .currentFilter = ViewBag.CurrentFilter})
                        </th>
                        <th>
                                @Html.ActionLink("ATA_IdTipoApp", "Index", New With {.sortOrder = ViewBag.order1, .currentFilter = ViewBag.CurrentFilter})
                            </th>
                            <th>
                                @Html.ActionLink("ATA_Estado", "Index", New With {.sortOrder = ViewBag.order1, .currentFilter = ViewBag.CurrentFilter})
                            </th>
                      
    
                    </tr>
    
                    @For Each item In Model
                        @<tr>
                            <td>@Html.ActionLink("Incidencias", "Incidencias", New With {.id = item.APP_IdAplicacion}, New With {.class = "boton_incidencias"})</td>
                            <td>@Html.ActionLink("Delete", "Delete", New With {.id = item.APP_IdAplicacion}, New With {.class = "boton_borrar"})</td>
                            <td>@Html.ActionLink("Details", "Details", New With {.id = item.APP_IdAplicacion}, New With {.class = "boton_ver"})</td>
                            <td>@Html.ActionLink("Edit", "Edit", New With {.id = item.APP_IdAplicacion}, New With {.class = "boton_editar"})</td>
                            <td>@Html.ActionLink("GSeguridad", "GSeguridad", New With {.id = item.APP_IdAplicacion}, New With {.class = "boton_seguridad"})</td>
    
                            <td>
                                @Html.DisplayFor(Function(modelItem) item.APP_Nombre)
                            </td>
    
                            <td>
                                    @Html.DisplayFor(Function(modelItem) item.ATA_AuxTipoApp.ATA_Descripcion)
                            </td>
    
                             <td>
                                    @Html.DisplayFor(Function(modelItem) item.AEA_AuxEstadoApp.AEA_Descripcion)
                            </td>
                          
    
    
    
                        </tr>
                    Next
    
                </table>
    
            </div>
            Page @IIf(Model.PageCount < Model.PageNumber, 0, Model.PageNumber) of @Model.PageCount
            @Html.PagedListPager(Model, Function(page) Url.Action("Index",
                                                                                          New With {page, .sortOrder = ViewBag.CurrentSort, .bReferencia = ViewBag.bReferencia, .bReferenciaS = ViewBag.bReferenciaS, .bReferenciaC = ViewBag.bReferenciaC, .bInteresado = ViewBag.bInteresado, .bMunicipio = ViewBag.bMunicipio, .bProvincia = ViewBag.bProvinciaS, .bAsunto = ViewBag.bAsunto, .bSituacion = ViewBag.bSituacionS, .bAlerta = ViewBag.bAlertaS, .bFecha = ViewBag.bFecha}))
    
    
           
        
    
        </fieldset>
    End Using
    

    y el del controler es:

     Function Index(ByVal sortOrder As String, currentFilter As String, searchString As String, page As Integer?, Optional ByVal boton As String = "") As ActionResult
                CargarCombos()
    
                If boton.Equals("Nueva Aplicacion") Then
                    Return RedirectToAction("Create")
                Else
                    ViewBag.CurrentSort = sortOrder
                    ViewBag.order1 = If(String.IsNullOrEmpty(sortOrder), "1_desc", String.Empty)
    
    
    
    
                    If Not searchString Is Nothing Then
                        page = 1
                    Else
                        searchString = currentFilter
                    End If
    
                    ViewBag.CurrentFilter = searchString
    
    
    
    
                    'Dim lAplicaciones As List(Of APP_AplicacionMD) = GetAllAplicaciones()
    
    
    
                    Dim aplicacion = From s In db.APP_Aplicacion.Where(Function(x) x.APP_Nombre IsNot Nothing) Select s
                    If Not String.IsNullOrEmpty(searchString) Then
                        aplicacion = aplicacion.Where(Function(s) s.APP_Nombre.ToUpper().Contains(searchString.ToUpper()))
                    End If
    
    
    
                    Select Case sortOrder
                        Case "1_desc"
                            aplicacion = aplicacion.OrderByDescending(Function(s) s.APP_Nombre)
                        Case Else
                            aplicacion = aplicacion.OrderBy(Function(s) s.APP_Nombre)
                    End Select
    
                    ' Añadir provincias y poblaciones
    
    
    
    
                    Dim pageSize As Integer = System.Configuration.ConfigurationManager.AppSettings("elementosXpagina")
                    Dim pageNumber As Integer = If(page, 1)
                    Return View(aplicacion.ToPagedList(pageNumber, pageSize))
                End If
            End Function

    digamos que este

    @For Each item In Model

    solo funciona bien la primera vez porque si cambio el nombre de una aplicacion de la lista  sigue mostrando la aplicacion inicial sin el cambio

    viernes, 11 de mayo de 2018 10:55

Todas las respuestas

  • ¿No estará utilizando caching?  ¿Cómo carga el modelo?  Veo que la variable aplicacion se utiliza pero no veo su definición.

    Jose R. MCP
    Code Samples

    lunes, 14 de mayo de 2018 5:35
  • estoy utilizando 2 controllers, en uno tengo todos mis metodos, y en otro lo basico de editar, detalles, borrar del principal, el principal utiliza los metodos que se encuentran en el controller de metodos, ¿puede ser esa la causa por la que no me refresque las pantallas?
    jueves, 17 de mayo de 2018 11:17
  • No especulemos.  Depure su aplicación, especialmente lo relacionado a la creación del modelo de la vista, que tiene que ver con esa variable aplicacion que le mencioné.

    Depure la creación del modelo después de editarle.  ¿Toma el nuevo valor de la base de datos?  Si no, que imagino es lo que está pasando, la depuración mostrará por qué.  Por ejemplo, podría ser que el código no esté corriendo el SELECT en base de datos, o que ASP.net ni siquiera esté corriendo su código porque tiene caching habilitado.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 17 de mayo de 2018 18:59