none
como actualizar una lista luego de realizar una inserción dentro de mi misma vista RRS feed

  • Pregunta

  • resulta  que estoy trabajando en un ejercicio hecho en mvc3 ,en el  cual tengo una vista que en su parte posterior me permite hacer 
    el registro de una variable ('temperatura,humedad......')que hago mediante un <select>,y en su parte inferior simplemente tengo una lista en la cual muestro registros asociados a  esos datos que he registrado,la parte de registrar la hago bien y de hecho me guarda en base de datos pero resulta que aun no se como actualizar la lista luego de hacer el registro,intente hacer un redirectionto(vista o pagina de registro ) en el controlador luego de que me registra en bd.
    mi pregunta es como lograr actualizar luego de hacer la inserción,para asi mirar en la misma vista el registro que acabo de insertar.

    para tener una idea mas clara de lo que estoy haciendo  anexo el siguiente codigo:

    //codigo de mi vista

    @using webSigma.Utilidades
    @model webSigma.Models.Mimodelo
    
    @{
        ViewBag.Title = "Agregar   Variables";
    }
    
    
    <script type="text/javascript">
        $(function () {
            $("#guardar").click(function () {
                var equi = $("#equi").val();
                var variable = $("#variable").val();
                updateResultExpressionTree(equi, variable); // Change to use another function
                return false;
              });
        });
    </script>
    <script type="text/javascript">
    // Expression tree version
        function updateResultExpressionTree(equi, variable) {
            var url = @Script.Replace((equi, variable) => Url.Action("savedetalleequi", "Equipomedicion", new {equi, variable})) ;
            $("#result").load(url);
            }    
    </script>
    
    
    <h2>Agregar  Variables</h2>
    <div id="resultado">
    
     @foreach (var equipomedicion in Model.equiposmedicion)
     {
         <input type="hidden" id="equi" value="@Html.DisplayFor(modelItem => equipomedicion.Identificador)"/>
     }
    <br/>
    <label>seleccionar variables</label>
     &nbsp;&nbsp;&nbsp;&nbsp;
     <select id="variable">
     @foreach (var variable in Model.variables)
     {
         <option value="@Html.DisplayFor(modelItem=>variable.Identificador) "> @Html.DisplayFor(modelItem=>variable.Nombre) </option>
     }
     </select>
     <br/>
     <br/>
     <br/>
     <div>
     <input type="button" id="guardar" value="Agregar Variable"/>
     </div>
     <br/>
     <div id="result">
     
     </div>
     
     <label>Variables Asociadas</label>
     <br/>
     <br/>
     <table border="1" id="mitabla">
        <tr>
            
            <th>
                equipo de medicion
            </th>
            <th>
                variable
            </th>
         
           
        </tr>
    
    @foreach (var detalle in Model.detalleequipo) {
        <tr>
           
            <td>
                @Html.DisplayFor(modelItem => detalle.Equiponombre)
            </td>
            <td>
                @Html.DisplayFor(modelItem => detalle.Variablenombre)
            </td>
          
       </tr>
    }
    
    </table>
    
     </div>

    y el codigo de mi controlador:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using SigmaLibrary.Negocios;
    using webSigma.Models;
    namespace webSigma.Controllers
    {
        public class EquipomedicionController : Controller
        {
            //
            // GET: /Equipomedicion/
    
            public ActionResult Index()
            {
    
                EquipomedicionBOcs equibo = new EquipomedicionBOcs();
                return View(equibo.obtenerequipos());
    
            }
    
            public ActionResult agregarvariables(int id)
            {
                EquipomedicionBOcs equibo = new EquipomedicionBOcs();
                VariablesBO varbo = new VariablesBO();
                DetalleequipoBO detallebo=new DetalleequipoBO();
                var mimodelo = new Mimodelo(equibo.seleccionaequipoxid(id), varbo.obtenervariables(),detallebo.seleccionardetalleequipoxid(id));
                return View(mimodelo);
            }
    
            public ActionResult savedetalleequi(int equi,int variable)
            {
                new DetalleequipoBO().creardetalleequipo(equi,variable);
                //return Content(string.Format(" variable agregada  bn"));
                return RedirectToAction("agregarvariables");
    
            }
    
        }
    }

    puntos a resaltar en el metodo  agregarvariables  hago uso de un viewmodel  y mi logica de negocio la  traigo de un proyecto de tipo biblioteca de clases.

     agradeceria si me brindan un ejemplo o una idea general de como lograr esto.gracias.


    viernes, 1 de junio de 2012 4:51

Respuestas

  • Buenas!

    Estás incrustando el resultado de la acción "savedetalleequi" en el <div> result.

    Desde dicha acción debes devolver una vista parcial con el contenido html que quieras incrustar en el <div>

    return PartialView("nombre_vista_parcial");

    Si no pones el parámetro "nombre_vista_parcial" la vista debe llamarse igual que la acción.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta camilo25 miércoles, 6 de junio de 2012 16:23
    viernes, 1 de junio de 2012 10:22

Todas las respuestas

  • Buenas!

    Estás incrustando el resultado de la acción "savedetalleequi" en el <div> result.

    Desde dicha acción debes devolver una vista parcial con el contenido html que quieras incrustar en el <div>

    return PartialView("nombre_vista_parcial");

    Si no pones el parámetro "nombre_vista_parcial" la vista debe llamarse igual que la acción.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta camilo25 miércoles, 6 de junio de 2012 16:23
    viernes, 1 de junio de 2012 10:22
  • eduard  gracias por tu respuesta pero aun no logro comprender del todo  no se si cuando me dices que devuelva una vista previa simplemente tengo que crear una vista con el codigo de la lista  que esta en la vista del primer bloque de codigo  o si puedo utilizar la vista que tengo que  al igual  tiene la lista, de esta manera :

    return PartialView("agregarvariables"); asi se llama la vista que comento en elprimer bloque  de codigo

    y otra inquietud no se si  con el simple return partialview (.......) se asume que el contenido de esa vista previa se muestra dentro del div o como es dicha relacion.

     nuevamente gracias y te agradesco si me ayudas.

    viernes, 1 de junio de 2012 22:01
  • oye eduard gracias,  simplemente era cuestion de prestar mucha atencion al  contenido de tu mensaje y entender la idea general, luego de intentar varias veces  logre lo que queria,asi que gracias...

    miércoles, 6 de junio de 2012 16:23
  • Buenas,

    Perdona no vi tu respuesta :( Parece que las alertas del foro no han terminado de funcionar (o yo me olvidé de pedir alerta de respuestas).

    Bueno, pues nada, encantado que lo hayas podido resolver :)


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    jueves, 7 de junio de 2012 6:05