none
Crear una vista desde cero RRS feed

  • Pregunta

  • Estoy trabajando con ASP.NET MVC, estoy creando mis vistas desde cero a puro html, al crear una vista vacía me crea esto.

    @{
    ViewBag.Title = "Proveedor";
    }
    
    <h2>Proveedor</h2>

    Pero al crear código html hago esto

       @{
        ViewBag.Title = "Proveedor";
    }
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <h2>Proveedor</h2>
    
    </body>
    </html>

    Quisiera saber si la parte del ViewBag va por fuera del html o va por dentro y si va por dentro en que parte va?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 16:44

Respuestas

  • Pedro Ávila,

    Nadie dijo que escribir código utilizando la sintaxis Razor excluye utilizar otras tecnologías, nada mas lejano de la realidad.

    En las imágenes que adjuntas podrías ayudarte con Razor, escribir algo de HTML, de seguro apoyarte con algún framework como bootstrap, de seguro también utilizarás JavaScript y algo de JQuery, alguna librería para utilizar la grilla como MVC Grid, etc., etc. Un proyecto real no sólo se compone de HTML o Razor.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila lunes, 13 de febrero de 2017 18:36
    lunes, 13 de febrero de 2017 18:20
  • hola

    >>Cuando le haga clic a + me aparezca una vista parcial en el cual ingreso los datos.

    entiendo que esta vista parcial se mostrara como popup, no? si es asi usar el jquery Dialog, como se explica aqui

     CRUD Operations using Partial View and jQueryUI in ASP.NET MVC4 - Part 2

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 13 de febrero de 2017 18:24

Todas las respuestas

  • hola

    si creas un .html entonce el ViewBag no aplica, ya no podras usarlo

    vas a tener usar puro codigo cliente ya sea con jquery y el $.ajax para invocar un action del controles que retorne el json que usara spara cargar controles

    o si te animas implementa Angular

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 16:53
  • Hola 

    Entonces no importa si borro la parte del ViewBag?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 17:10
  • Pedro Ávila,

    ¿Tu proyecto de ASP Net MVC tiene una -o más de una- vista Layout (Views > Shared > _Layout.cshtml)?  Una vista layout permite definir una plantilla común que puede ser heredada por cualquier vista.

    La instrucción @{ViewBag.Title = "Proveedor"} establece un valor de título para la etiqueta <title> del Layout. En la vista _Layout.cshtml debes tener algo parecido a:

    <!DOCTYPE html>
    <html lang="es">
        <head>
            <meta charset="utf-8" />
            <title>@ViewBag.Title</title>



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 13 de febrero de 2017 17:13
  • Pues bien, si la vista que escribes hereda de la vista _Layout.cshtml sólo debes escribir a partir de donde se invoca la instrucción @RenderBody (de la vista _Layout.cshtml), por tanto, la vista debería quedar tal como genera la plantilla:

    @{
        ViewBag.Title = "Proveedor";
    }
    
    <h2>Proveedor</h2>


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 13 de febrero de 2017 17:14
  • hola

    >>no importa si borro la parte del ViewBag?

    si lo que estas creando es .html no aplca el ViewBag, porque la pagina no compila nada del lado del servidor

    ahora si es un .cshtml eso si es una view donde una parte ejecuta en el servidor, alli si puede usarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 17:23
  • @Willams

    Tengo esto en la ruta que me indicas.

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>@ViewBag.Title - My ASP.NET Application</title>
        <link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
        <link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
        <script src="~/Scripts/modernizr-2.6.2.js"></script>
    </head>


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 17:30
  • @Willams 

    Estoy trabajando con la extención cshtml entonces lo que me quieres decir que mi vista que la estoy trabajando con código html puede quedar así?

    @{
        ViewBag.Title = "Proveedor";
    }
    
    <h2>Proveedor</h2>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
    
        <table class="table">
            <tr>
                <td>ProveedorId</td>
                <td>Razón Social</td>
                <td>Documento Identidad</td>
                <td>Número documento</td>
                <td>Dirección</td>
                <td>Teléfono</td>
                <td></td>
                <td></td>
            </tr>
        </table>
    
    </body>
    </html>

    Esta bien esto?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 17:34
  • >>Tengo esto en la ruta que me indicas.

    si tiene un .html el ViewBag deberias quitarlo 

    el ~/ tampoco podras usarlo, podrias probar con el ./

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 17:37
  • Pedro Ávila,

    A eso me refiero, la vista que intentas implementar se construirá tomando como base las instrucciones escritas en la plantilla de la que hereda (_Layout.cshtml), fíjate que la plantilla intenta concatenar el valor que escribes en el objeto @ViewBag.Title a la cadena ' - MyASP.NET Application', por tanto el título de la página -cuando se muestre la vista- será: 

    Proveedor - MyASP.NET Application

    Por otro lado, como te habrás dado cuenta en la vista _Layout.cshtml hay muchas etiquetas HTML escritas dando forma a una plantilla o esquema común de página, por tanto, no tiene sentido volver a escribirlas en la vista que intentas implementar, ¿verdad?.

    Finalmente, identifica la instrucción -en la vista _Layout.cshtml- @RenderBody(), dicha instrucción "inyecta/reemplaza" el código que tienes escrito en la vista heredada.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 13 de febrero de 2017 17:41
  • @{
        ViewBag.Title = "Proveedor";
    }
    
    <h2>Proveedor</h2>
    
    <table class="table">
    	<tr>
    		<td>ProveedorId</td>
    		<td>Razón Social</td>
    		<td>Documento Identidad</td>
    		<td>Número documento</td>
    		<td>Dirección</td>
    		<td>Teléfono</td>
    		<td></td>
    		<td></td>
    	</tr>
    </table>


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 13 de febrero de 2017 17:43
  • @Willams

    Esto es lo queme da como resultado


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 17:45
  • hola

    >>Estoy trabajando con la extención cshtml entonces lo que me quieres decir que mi vista que la estoy trabajando con código html puede quedar así?

    Pero no dejas claro lo que estas queriendo lograr, la extension del archivo es .cshtml o .html ? porque si es puro html entonces no usarias ningun objeto del lado del servidor

    si la idea es usar puro html entonces el ViewBag o cualquier objeto @Html no aplica, ya que el archivo es .html

    la idea es que uses html y javascript (o mejor aun jquery o Angular)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 17:45
  • Pedro, la etiqueta <TITLE> establece el título de la página:

    Tómalo a bien, pero, ¿cómo intentas escribir la vista "a puro html" si tienes problemas básicos? Por favor, lee antes de escribir código.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 13 de febrero de 2017 17:53
  • @Leandro 

    Me quieres decir que enlas View no necesariamente mis view's pueden ser cshtml. ¿Puedo trabajar con mis view con html? una pregunta ¿Que pasaría si en mi carpeta View trabajo con cshtml y dentro de es archivo escribo codigo html para crear la view?

    Por otro lado así sea cshtml o html la extensión que use para escribir html puro se complicaria mi código ya que tendría que trabajar con mucho jquery y jason? eso sería un problema?

    Nesecito me orienten en eso 


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 17:53
  • Leandro,

    Creo que nuestro amigo Pedro se refiere a "puro Html" porque quiere evitar escribir código en sintaxis Razor (debido a una recomendación desde mi punto de vista equivocada) que fue un hilo que escribió hace unas semanas atrás pero el archivo es un *cshtml.

    lunes, 13 de febrero de 2017 17:56
  • hola

    >>¿Que pasaría si en mi carpeta View trabajo con cshtml y dentro de es archivo escribo codigo html para crear la view?

    es que si vas a realizar eso sin usar los helper entonces para que usarias un .cshtml ? para eso como comente usa un .html con Angular

    >>Por otro lado así sea cshtml o html la extensión que use para escribir html puro se complicaria mi código ya que tendría que trabajar con mucho jquery y jason?

    exacto, si usas puro html entonces debes programar con javascript en el cliente

    lo comun es usar html + Angular en el cliente y WebApi del lado del servidor, entiendo que cuando dices puro html te refieres justamente a eso

    sino es asi entonces no es puro html porque tendras componentes que requieren render en el servidor

    >>eso sería un problema?

    para nada, yo programo todo el dia usando Angular, html y web api, quizas al principio cueste un poco porque en tu caso seria algo nuevo, pero como todo despues se hace mucho mas simple

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 18:03
  • Willams 

    Puedo crear una vista usando Razor pero que pasa si me piden que cree un mantenimiento de la siguiente manera primero traerme los datos paginados en una tabla

    Y tengo unos botones arriba de la grilla para crear un nuevo registro

    Botones

    Cuando le haga clic a + me aparezca una vista parcial en el cual ingreso los datos.

    Claro que los botones es un tema aparte.

    Regresando al tema de razor, con razor voy a poder crear ese diseño personalizado? creo que debo apoyarme con código html?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 18:06
  • hola Willams

    >>se refiere a "puro Html" porque quiere evitar escribir código en sintaxis Razor

    Ahora que veo los ejemplos que planteo parece ser que apunta a eso, pero salvo que pueda usar

    Introduction to Tag Helpers

    no veo que aporte mucho, pero entiendo que esto aplicaria a MVC 6

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 18:06
  • @Leandro 

    Por ahora solo quiero trabajar con javascript, jquery y html. Angular lo dejo para más adelante por que ahora no se por donde comenzar a crear una vista personallizada y eso que ya he expreimentado con Razor.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila lunes, 13 de febrero de 2017 18:11 ...
    lunes, 13 de febrero de 2017 18:11
  • Leandro

    Usando MVC 4 se crearon esa view que puse como imagenes pero usaron angular para ser sincero pero yo no se usar angular y por ahora lo dejo de lado solo quiero apoyarme por ahora en jquery, ya que soy noob en ambiente web, no creo que por que no sepa angular ya no puedo crear una vista personalizada.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 18:16
  • Pedro Ávila,

    Nadie dijo que escribir código utilizando la sintaxis Razor excluye utilizar otras tecnologías, nada mas lejano de la realidad.

    En las imágenes que adjuntas podrías ayudarte con Razor, escribir algo de HTML, de seguro apoyarte con algún framework como bootstrap, de seguro también utilizarás JavaScript y algo de JQuery, alguna librería para utilizar la grilla como MVC Grid, etc., etc. Un proyecto real no sólo se compone de HTML o Razor.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila lunes, 13 de febrero de 2017 18:36
    lunes, 13 de febrero de 2017 18:20
  • hola

    >>Cuando le haga clic a + me aparezca una vista parcial en el cual ingreso los datos.

    entiendo que esta vista parcial se mostrara como popup, no? si es asi usar el jquery Dialog, como se explica aqui

     CRUD Operations using Partial View and jQueryUI in ASP.NET MVC4 - Part 2

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 13 de febrero de 2017 18:24
  • Leandro

    Asi es popup, en conclusión no creo sea un crimen escribir codigo html dentro de un archivo de extensión cshtml para personalizar la View en el cual también puede haber razor.

     


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    lunes, 13 de febrero de 2017 18:30
  • >>en conclusión no creo sea un crimen escribir codigo html dentro de un archivo de extensión cshtml

    claro que no es ningun problema, el tema es que cuando quieres trabjar todo en html veras que vas a tener que programar mucho con codiog cliente ya que no tendras mas post al servidor, sino mucho $.ajax por todos lados

    es en estos casos cuando Angular aporta una ventaja al crear codigo mas claro, por eso te decia que si querias ir por ese lado lo mejor es saltar directo a Angular

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de febrero de 2017 18:40