Saltar al contenido

TempData keep () vs peek ()

Si encuentras algún problema en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes aplicar el código al proyecto final.

Solución:

Cuando un objeto en un TempDataDictionary se lee, se marcará para su eliminación al final de esa solicitud.

Eso significa que si pones algo en TempData como

TempData["value"] = "someValueForNextRequest";

Y en otra solicitud, acceda a él, el valor estará allí, pero tan pronto como lo lea, el valor se marcará para su eliminación:

//second request, read value and is marked for deletion
object value = TempData["value"];

//third request, value is not there as it was deleted at the end of the second request
TempData["value"] == null

los Peek y Keep Los métodos le permiten leer el valor sin marcarlo para su eliminación. Digamos que volvemos a la primera solicitud donde se guardó el valor en TempData.

Con Peek obtiene el valor sin marcarlo para su eliminación con una sola llamada, consulte msdn:

//second request, PEEK value so it is not deleted at the end of the request
object value = TempData.Peek("value");

//third request, read value and mark it for deletion
object value = TempData["value"];

Con Keep usted especifica un key que se marcó para su eliminación que desea conservar. Recuperar el objeto y luego guardarlo de la eliminación son 2 llamadas diferentes. Ver msdn

//second request, get value marking it from deletion
object value = TempData["value"];
//later on decide to keep it
TempData.Keep("value");

//third request, read value and mark it for deletion
object value = TempData["value"];

Puedes usar Peek cuando siempre desea conservar el valor para otra solicitud. Usar Keep cuando la retención del valor depende de una lógica adicional.

Tiene 2 buenas preguntas sobre cómo funciona TempData aquí y aquí

¡Espero eso ayude!

Acabo de terminar de entender Peek and Keep y tuve la misma confusión inicialmente. La confusión surge porque TempData se comporta de manera diferente en diferentes condiciones. Puede ver este video que explica Keep and Peek con una demostración https://www.facebook.com/video.php?v=689393794478113

Tempdata ayuda a preservar los valores para una sola solicitud y TAMBIÉN PUEDE preservar valores para la próxima solicitud dependiendo de 4 condiciones”.

Si entendemos estos 4 puntos, verá más claridad. A continuación se muestra un diagrama con las 4 condiciones, lea el tercer y cuarto punto que habla de Peek and Keep.

ingrese la descripción de la imagen aquí

Condición 1 (no leído): – Si establece un “TempData” dentro de su acción y si no lo lee en su vista, entonces “TempData” se conservará para la próxima solicitud.

Condición 2 (lectura normal): – Si lee “TempData” normalmente como el código a continuación, no persistirá para la próxima solicitud.

string str = TempData["MyData"];

Incluso si está mostrando, es una lectura normal como el código a continuación.

@TempData["MyData"];

Condición 3 (leer y conservar): – Si lee “TempData” y llama al método “Keep”, se conservará.

@TempData["MyData"];
TempData.Keep("MyData");

Condición 4 (Mirar y leer): – Si lee “TempData” utilizando el método “Peek”, persistirá para la siguiente solicitud.

string str = TempData.Peek("Td").ToString();

Referencia: – http://www.codeproject.com/Articles/818493/MVC-Tempdata-Peek-and-Keep-confusion

TempData también es un objeto de diccionario que permanece durante el tiempo de una solicitud HTTP. Por lo tanto, TempData se puede usar para mantener datos entre una acción del controlador y la otra acción del controlador.

TempData se utiliza para comprobar el null valores cada vez. TempData contiene dos métodos keep () y peek () para mantener el estado de los datos de una acción del controlador a otras.

Cuando TempDataDictionary se lee el objeto, al final de la solicitud se marca como eliminación del objeto de lectura actual.

los guardar() y ojeada() El método se utiliza para leer los datos sin borrar el objeto de lectura actual.

Puedes usar Ojeada() cuando siempre desea retener / evitar el valor para otra solicitud. Puedes usar Guardar() cuando prevenir / mantener el valor depende de una lógica adicional.

Sobrecarga en TempData.Peek () y TempData.Keep () como se indica a continuación.

TempData.Keep () tienen 2 métodos sobrecargados.

  1. void guardar() : Que amenazan todos los datos que no se eliminan al completar la solicitud actual.

  2. void guardar(string key) : persiste el elemento específico en TempData con la ayuda del nombre.

TempData.Peek () sin métodos sobrecargados.

  1. objeto ojeada(string key) : devuelve un objeto que contiene elementos con especificidad key sin hacer key para su eliminación.

Ejemplo de tipo de retorno de los métodos TempData.Keep () y TempData.Peek () como se indica a continuación.

público void Guardar(string key) _retainedKeys.Add (key);

objeto publico Ojeada(string key) valor del objeto = valores; valor de retorno;

Si sostienes alguna vacilación o disposición de aclarar nuestro sección te recomendamos escribir una crónica y con placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *