none
Copiar string al portapapeles en MVC C# RRS feed

  • Pregunta

  • Buen día 

    lo que quiero hacer es copiar el valor de la variable al portapapeles, pero al ejecutar este fragmento de código el visual studio me saca una excepción. 

     public void copiarPortaPapeles()
            {

              string variable = "hola mundo";

              Clipboard.SetText(variable);    (aquí sale el error)
            }

    la excepción ThreadStateException

    dice 

    El subproceso actual debe establecerse en el modo de subprocesamiento controlado simple (Single Thread Apartment, STA) para poder realizar llamadas OLE. Asegúrese de que la función Main tiene marcado STAThreadAttribute.

    como puedo solucionarlo ???

    gracias de antemano. 

           

    • Editado Juliancho9 miércoles, 24 de octubre de 2018 15:03
    miércoles, 24 de octubre de 2018 13:53

Todas las respuestas

  • Hola. No conozco el tema pero me llamo la atención el parámetro "a" que le pasas a Clipboard.SetText(a), sobre todo porque antes definiste el string variable. ¿No habras querido poner Clipboard.SetText(variable) ?
    miércoles, 24 de octubre de 2018 14:40
  • Buenas,

    Puedes explicar que es lo que te gustaría hacer y que tecnologías utilizas?

    Pregunto esto porque en MVC, todo el código de los controladores se ejecuta en el servidor, esto es, estas copiando al portapapeles del servidor (ademas de que para acceder a el necesitas añadir referencias) lo cual me parece que no es lo que quieres. Corrígeme si me equivoco, pero entiendo que lo que quieres es copiar una parte de la web que ves en el navegador al portapapeles del pc donde ves la web, y no a la del servidor. Si esto es cierto, se hace utilizando JavaScript.

    Danos un poco más de información, tal vez el nombre de la sección que quieres copiar, y te podremos dar una solución más concreta.

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 24 de octubre de 2018 15:06
  • si amigo es      Clipboard.SetText(variable); 

    pero también he intentado de una forma mas directa tal como  Clipboard.SetText("Hola mundo");  pero sale la excepción ThreadStateException
    miércoles, 24 de octubre de 2018 15:13
  • Jorge Turrado si amigo, quiero copiar al portapales del pc en el cual estoy, el servidor en este momento digamos que no me interesa porque es para el pc en el que me encuentro, pero primero necesito que se ejecute el método del controlador y luego copiar al portapapeles, cuando lo hago por javascript primero me ejecuta el portapapeles y despues el metodo del controlador y yo lo que quiero es lo contrario 
    miércoles, 24 de octubre de 2018 15:16
  • hola

    >>el servidor en este momento digamos que no me interesa porque es para el pc en el que me encuentro,

    no pude no interesarte, estas con mvc por lo que es un desarrollo web esta es fundamental

    el clipboard copia del lado del servidor y no se usa en un ambiente web, solo aplica en el desktop

    si queires haerlo en el web se debe usar javascript o jquery para que ejecute en el browser

    tienes librerias como ser

    https://clipboardjs.com/

    que podrian ayudar

    >>pero primero necesito que se ejecute el método del controlador y luego copiar al portapapeles, cuando lo hago por javascript primero me ejecuta el portapapeles y despues el metodo del controlador

    no entiendo que quieres lograr, pero es incorrecto lo que estas planteando

    analiza mejor que quieres conseguir porque el camino que te propones es incorrecto, no uses el clipboard del lado servidor en un desarrollo web

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 24 de octubre de 2018 16:53