Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
En este documento se describe la versión de ASP.NET MVC 4 Beta para Visual Studio 2010.
Nota
Esta no es la versión más reciente. Las notas de la versión de ASP.NET MVC 4 RC están disponibles aquí.
Actualización de un proyecto de ASP.NET MVC 3 a ASP.NET MVC 4
Nuevas características de ASP.NET MVC 4 Beta
ASP.NET MVC 4 Beta para Visual Studio 2010 se puede instalar desde la página principal de ASP.NET MVC 4 mediante el Instalador de plataforma web.
Para instalar ASP.NET MVC 4 Beta, debe desinstalar las versiones preliminares instaladas anteriores de ASP.NET MVC 4.
Esta versión no es compatible con la versión preliminar para desarrolladores de NET Framework 4.5. Debe desinstalar la versión preliminar para desarrolladores de .NET 4.5 antes de instalar ASP.NET MVC 4 Beta.
ASP.NET MVC 4 se puede instalar y ejecutar en paralelo con ASP.NET MVC 3.
La documentación de ASP.NET MVC está disponible en el sitio web de MSDN en la siguiente dirección URL:
https://go.microsoft.com/fwlink/?LinkID=243043
Hay disponibles tutoriales y otra información sobre ASP.NET MVC en la página de MVC 4 del sitio web de ASP.NET (https://www.asp.net/mvc/mvc4).
Se trata de una versión preliminar y no se admite oficialmente. Si tiene alguna pregunta sobre cómo trabajar con esta versión, también puede publicarla en el foro de ASP.NET MVC (https://forums.asp.net/1146.aspx), donde los miembros de la comunidad de ASP.NET a menudo pueden proporcionar soporte informal.
Los componentes de ASP.NET MVC 4 para Visual Studio requieren PowerShell 2.0 y, además, Visual Studio 2010 con Service Pack 1 o Visual Web Developer Express 2010 con Service Pack 1.
ASP.NET MVC 4 se puede instalar en paralelo con ASP.NET MVC 3 en el mismo equipo, lo que le ofrece la flexibilidad para elegir cuándo actualizar una aplicación ASP.NET MVC 3 a ASP.NET MVC 4.
La manera más sencilla de actualizar es crear un nuevo proyecto de ASP.NET MVC 4 y copiar todas las vistas, controladores, código y archivos de contenido del proyecto MVC 3 existente en el nuevo proyecto y después actualizar las referencias de ensamblado en el nuevo proyecto para que coincidan con cualquier plantilla que no sea de MVC, incluida la que esté usando. Si ha hecho cambios en el archivo Web.config del proyecto MVC 3, también debe combinar esas alteraciones en el archivo Web.config del proyecto MVC 4.
Para actualizar manualmente una aplicación existente de ASP.NET MVC 3 a la versión 4, haga lo siguiente:
En todos los archivos Web.config del proyecto (hay uno en la raíz del proyecto, uno en la carpeta Vistas y otro en la carpeta Vistas de cada área del proyecto), reemplace cada instancia del texto siguiente:
System.Web.Mvc, Version=3.0.0.0
System.Web.WebPages, Version=1.0.0.0
System.Web.Helpers, Version=1.0.0.0
System.Web.WebPages.Razor, Version=1.0.0.0
con el texto correspondiente siguiente:
System.Web.Mvc, Version=4.0.0.0
System.Web.WebPages, Version=2.0.0.0
System.Web.Helpers, Version=2.0.0.0,
System.Web.WebPages.Razor, Version=2.0.0.0,
En el archivo raíz Web.config, actualice el elemento webPages:Version a "2.0.0.0" y agregue una nueva clave PreserveLoginUrl que tenga el valor "true":
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="PreserveLoginUrl" value="true" />
</appSettings>
En el Explorador de soluciones, elimine la referencia a System.Web.Mvc (que apunta al archivo DLL de la versión 3). Después agregue una referencia a System.Web.Mvc (v4.0.0.0). En concreto, realice los siguientes cambios para actualizar las referencias de ensamblado. Los detalles son los siguientes:
En el Explorador de soluciones, elimine referencias a los ensamblados siguientes:
Agregue una referencia a los ensamblados siguientes:
En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y luego seleccione Descargar proyecto. Después, vuelva a hacer clic con el botón derecho en el nombre y seleccione Editar ProjectName.csproj.
Busque el elemento ProjectTypeGuids y reemplace {E53F8FEA-EAE0-44A6-8774-FFD645390401} por {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando, haga clic con el botón derecho en el proyecto y después seleccione Volver a cargar proyecto.
Si el proyecto hace referencia a bibliotecas de terceros que se compilan con versiones anteriores de ASP.NET MVC, abra el archivo web.config raíz y agregue los tres elementos bindingRedirect siguientes en la sección configuración :
<configuration>
<!--... elements deleted for clarity ...-->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
En esta sección se describen las características que se han introducido en la versión ASP.NET MVC 4 Beta.
ASP.NET MVC 4 ahora incluye ASP.NET Web API, un nuevo marco para crear servicios HTTP que pueden llegar a una amplia gama de clientes, incluidos exploradores y dispositivos móviles. ASP.NET Web API es una plataforma ideal para desarrollar también servicios de RESTful.
ASP.NET Web API incluye compatibilidad con las siguientes características:
Para obtener más información sobre ASP.NET Web API, visite https://www.asp.net/web-api.
ASP.NET MVC 4 ahora incluye una versión preliminar temprana de la experiencia para crear aplicaciones de página única con interacciones significativas del lado del cliente mediante JavaScript y API Web. Esta compatibilidad incluye:
Para obtener más información sobre la compatibilidad con la aplicación de página única en ASP.NET MVC 4, visite https://www.asp.net/single-page-application.
La plantilla que se usa para crear nuevos proyectos de ASP.NET MVC 4 se ha actualizado para crear un sitio con una apariencia más moderna:
Además de las mejoras estéticas, hay una funcionalidad mejorada de la nueva plantilla. La plantilla emplea una técnica denominada representación adaptable para tener una buena apariencia exploradores de dispositivos de escritorio y móviles sin ninguna personalización.
Para ver la representación adaptable en acción, puede usar un emulador móvil o simplemente intentar cambiar el tamaño de la ventana del explorador de escritorio para que sea más pequeña. Cuando la ventana del explorador sea lo suficientemente pequeña, cambiará el diseño de la página.
Otra mejora de la plantilla de proyecto predeterminada es el uso de JavaScript para proporcionar una interfaz de usuario más completa. Los vínculos Inicio de sesión y Registro que se usan en la plantilla son ejemplos de cómo usar el cuadro de diálogo de la interfaz de usuario de jQuery para presentar una pantalla de inicio de sesión enriquecida:
Si va a iniciar un nuevo proyecto y quiere crear un sitio específicamente para exploradores en móviles y tabletas, puede usar la nueva plantilla de proyecto para aplicaciones móviles. Se basa en jQuery Mobile, una biblioteca de código abierto para crear una interfaz de usuario optimizada para entrada táctil:
Esta plantilla contiene la misma estructura de aplicación que la plantilla de aplicación de Internet (y el código del controlador es prácticamente idéntico), pero adquiere su estilo mediante jQuery Mobile para que obtenga una buena apariencia y funcione adecuadamente en dispositivos móviles basados en la entrada táctil. Para obtener más información sobre cómo se estructura y se aplica un estilo a la interfaz de usuario móvil, consulte el sitio web del proyecto jQuery Mobile.
Si ya tiene un sitio diseñado para escritorio al que quiere agregar vistas optimizadas para dispositivos móviles, o si busca crear un único sitio que sirva vistas de estilo diferente en exploradores móviles y de escritorio, puede usar la nueva característica Modos de visualización. (Consulte la sección siguiente).
La nueva característica Modos de visualización permite a una aplicación seleccionar vistas en función del explorador que hace la solicitud. Por ejemplo, si un explorador de escritorio solicita la página principal, la aplicación puede usar la plantilla Views\Home\Index.cshtml. Si un explorador en un dispositivo móvil solicita la página principal, la aplicación puede devolver la plantilla Views\Home\Index.mobile.cshtml.
Los diseños y las vistas parciales también se pueden invalidar para determinados tipos de explorador. Por ejemplo:
Si quiere crear vistas, diseños o vistas parciales más específicas para otros dispositivos, puede registrar una nueva instancia DefaultDisplayMode para especificar qué nombre se busca cuando una solicitud cumple condiciones concretas. Por ejemplo, podría agregar el código siguiente al método Application_Start en el archivo Global.asax para registrar la cadena "iPhone" como modo de presentación que se aplica cuando el explorador del iPhone de Apple hace una solicitud:
DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
Después de ejecutar este código, cuando un explorador de iPhone de Apple hace una solicitud, la aplicación usará el diseño Views\Shared\_Layout.iPhone.cshtml (si existe).
jQuery Mobile es una biblioteca de código abierto para crear una interfaz de usuario web optimizada para uso táctil. Si desea usar jQuery Mobile con una aplicación ASP.NET MVC 4, puede descargar e instalar un paquete NuGet que le ayudará a empezar. Para instalarlo desde la consola del Administrador de paquetes de Visual Studio, escriba el siguiente comando:
Install-Package jQuery.Mobile.MVC
Esto instala jQuery Mobile y algunos archivos auxiliares, incluidos los siguientes:
Después de instalar el paquete, ejecute la aplicación mediante un explorador móvil (o equivalente, como el complemento Conmutador del agente de usuario de Firefox). Verá que las páginas tienen un aspecto bastante diferente, ya que jQuery Mobile controla el diseño y el estilo. Para aprovecharlo, puede hacer lo siguiente:
Una convención para las páginas web optimizadas para dispositivos móviles es agregar un vínculo cuyo texto sea similar a Vista de escritorio o Modo de sitio completo que permita a los usuarios cambiar a una versión para escritorio de la página. El paquete jQuery.Mobile.MVC incluye un componente de modificador de vista de ejemplo para este propósito. Se usa en la vista Views\Shared\_Layout.Mobile.cshtml predeterminada y tiene este aspecto cuando se representa la página:
Si los visitantes hacen clic en el vínculo, se cambian a la versión de escritorio de la misma página.
Dado que el diseño de escritorio no incluirá un modificador de vista de forma predeterminada, los visitantes no tendrán ninguna manera de acceder al modo móvil. Para habilitarlo, agregue la siguiente referencia a _ViewSwitcher al diseño de escritorio, justo dentro del elemento del <cuerpo>:
<body>
@Html.Partial("_ViewSwitcher")
...
El modificador de vista usa una nueva característica denominada invalidación del explorador. Esta característica permite que la aplicación trate las solicitudes como si proviniesen de un explorador (agente de usuario) diferente del que realmente proceden. En la tabla siguiente se enumeran los métodos que proporciona la invalidación del explorador.
HttpContext.SetOverriddenBrowser(userAgentString) |
Omite el valor del agente de usuario real de la solicitud mediante el agente de usuario especificado. |
---|---|
HttpContext.GetOverriddenUserAgent() |
Devuelve el valor de invalidación del agente de usuario de la solicitud o la cadena del agente de usuario real en caso de que no se haya especificado ninguna invalidación. |
HttpContext.GetOverriddenBrowser() |
Devuelve una instancia HttpBrowserCapabilitiesBase que corresponde al agente de usuario establecido actualmente para la solicitud (real o invalidada). Puede usar este valor para obtener propiedades como IsMobileDevice. |
HttpContext.ClearOverriddenBrowser() |
Quita los agentes de usuario invalidados de la solicitud actual. |
La invalidación del explorador es una característica principal de ASP.NET MVC 4 y está disponible incluso si no instala el paquete jQuery.Mobile.MVC. Sin embargo, afecta solo a la vista, al diseño y a la selección de vista parcial, no afecta a ninguna otra característica de ASP.NET que dependa del objeto Request.Browser.
De forma predeterminada, la invalidación del agente de usuario se almacena mediante una cookie. Si desea almacenar la invalidación en otra parte (por ejemplo, en una base de datos), puede reemplazar el proveedor predeterminado (BrowserOverrideStores.Current). La documentación de este proveedor estará disponible para acompañar una versión posterior de ASP.NET MVC.
La nueva característica Recetas permite a Visual Studio generar código específico de la solución en función de los paquetes que se pueden instalar mediante NuGet. El marco de Recetas facilita a los desarrolladores escribir complementos de generación de código, que usted también puede usar para reemplazar los generadores de código integrados para Agregar área, Agregar controlador y Agregar vista. Dado que las recetas se implementan como paquetes NuGet, pueden comprobarse fácilmente en el control de código fuente y compartirse con todos los desarrolladores del proyecto automáticamente. También están disponibles por solución.
Ahora puede escribir métodos de acción asincrónicos como métodos únicos que devuelven un objeto de tipo Tarea o Tarea< ActionResult>.
Por ejemplo, si usa Visual C# 5 (o usa Async CTP), puede crear un método de acción asincrónico similar al siguiente:
public async Task<ActionResult> Index(string city) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common",
new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(),
SportsScores = await sportsService.GetScoresAsync()
});
}
En el método de acción anterior, las llamadas a newsService.GetHeadlinesAsync y sportsService.GetScoresAsync se llaman asincrónicamente y no bloquean un subproceso del grupo de subprocesos.
Los métodos de acción asincrónicos que devuelven instancias de Tarea también pueden admitir tiempos de espera. Para que el método de acción se pueda cancelar, agregue un parámetro de tipo CancellationToken a la firma del método de acción. En el ejemplo siguiente se muestra un método de acción asincrónico que tiene un tiempo de espera de 2500 milisegundos y que muestra una vista TimedOut al cliente si se produce un tiempo de espera.
[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task<ActionResult> Index(string city,
CancellationToken cancellationToken) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common",
new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
SportsScores = await sportsService.GetScoresAsync(cancellationToken)
});
}
ASP.NET MVC 4 Beta admite la versión de septiembre de 2011 1.5 del SDK de Windows Azure.
Después de instalar ASP.NET MVC 4 Beta, el editor CSHTML/VBHTML en Visual Studio 2010 Service Pack 1 puede pausarse durante mucho tiempo después de escribir fragmentos de código o JavaScript dentro de archivos cshtml o vbhtml. Esto solo se produce en las aplicaciones de ASP.NET MVC 4 que se acaban de crear y aún no se han compilado.
La solución consiste en compilar el proyecto para obtener los ensamblados en la carpeta bin. Tenga en cuenta que, si limpia el proyecto que quita los ensamblados de la carpeta bin, el problema del editor volverá.
Esto se corregirá en la próxima versión.
Las plantillas de proyecto de C# para Visual Studio 11 Beta contienen una cadena de conexión incorrecta en Global.asax.cs. La conexión predeterminada especificada en el método Application_Start para los proyectos creados en Visual Studio 11 Beta contiene una cadena de conexión de LocalDB que incluye un carácter de barra diagonal inversa sin ocultar (). Esto produce un error de conexión tras los intentos de obtener acceso a un DbContext de Entity Framework, que genera una excepción SqlException.
Para corregir este problema, elimine el carácter de barra diagonal inversa en el método App_Start de Global.asax.cs para que se lea lo siguiente:
Database.DefaultConnectionFactory =
new SqlConnectionFactory(
"Data Source=(localdb)\\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
Las aplicaciones de ASP.NET MVC 4 orientadas a .NET 4.5 producirán una FileLoadException al intentar acceder al ensamblado de System.Net.Http.dll cuando se ejecute en .NET 4.0. Las aplicaciones de ASP.NET MVC 4 creadas en .NET 4.5 contienen una redirección de enlace que dará como resultado una FileLoadException que indica "Could not load file or assembly 'System.Net.Http' or one of its dependencies." (No se pudo cargar el archivo o ensamblado System.Net.Http o una de sus dependencias) cuando la aplicación se ejecuta en un sistema con .NET 4.0 instalado. Para corregir este problema, quite el siguiente redireccionamiento de enlace de web.config:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a"
culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
El elemento de enlace de ensamblado en el archivo web.config modificado debe aparecer de la siguiente manera:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages"
publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
La plantilla de elemento "Agregar controlador" en proyectos de Visual Basic genera un espacio de nombres incorrecto cuando se invocadesde dentro de un área. Al agregar un controlador a un área de un proyecto de ASP.NET MVC que usa Visual Basic, la plantilla de elemento inserta el espacio de nombres incorrecto en el controlador. El resultado es un error de "archivo no encontrado" al navegar a cualquier acción del controlador.
El espacio de nombres generado omite todo después del espacio de nombres raíz. Por ejemplo, el espacio de nombres generado es RootNamespace , pero debe ser RootNamespace.Areas.AreaName.Controllers .
Cambios importantes en el motor de vistas de Razor. Como parte de una reescritura del analizador de Razor, se quitaron los siguientes tipos de System.Web.Mvc.Razor:
También se quitaron los métodos siguientes:
Cuando WebMatrix.WebData.dll se incluye en el directorio /bin de una aplicación de ASP.NET MVC 4, toma la dirección URL para la autenticación de formularios. Al agregar el ensamblado de WebMatrix.WebData.dll a la aplicación (por ejemplo, al seleccionar "ASP.NET Web Pages con sintaxis Razor" en el cuadro de diálogo Agregar dependencias implementables) se invalidará la redirección de inicio de sesión de autenticación a /account/logon en lugar de /account/login según lo previsto por el controlador de cuenta predeterminado de ASP.NET MVC. Para evitarlo y usar la dirección URL especificada ya en la sección de autenticación de web.config, puede agregar un appSetting denominado PreserveLoginUrl y establecerlo en true:
<appSettings>
<add key="PreserveLoginUrl" value="true"/>
</appSettings>
El administrador de paquetes NuGet produce error al intentar instalar ASP.NET MVC 4 para instalaciones en paralelo de Visual Studio 2010 y Visual Web Developer 2010. Para ejecutar Visual Studio 2010 y Visual Web Developer 2010 en paralelo con ASP.NET MVC 4, debe instalar ASP.NET MVC 4 una vez instaladas ambas versiones de Visual Studio.
Si ya se han desinstalado los requisitos previos, se produce un error al desinstalar ASP.NET MVC 4. Para desinstalar completamente ASP.NET MVC 4, debe desinstalar ASP.NET MVC 4 antes de hacerlo con Visual Studio.
Al ejecutar un proyecto predeterminado de la API Web se muestran instrucciones que dirigen incorrectamente al usuario para agregar rutas mediante el método RegisterApis, que no existe. Las rutas deben agregarse en el método RegisterRoutes mediante la tabla de rutas de ASP.NET.
La instalación de ASP.NET MVC 4 Beta interrumpe las aplicaciones de ASP.NET MVC 3 RTM. Las aplicaciones de ASP.NET MVC 3 creadas con la versión RTM (no con la versión de actualización de herramientas de ASP.NET MVC 3) requieren los siguientes cambios para poder trabajar en paralelo con ASP.NET MVC 4 Beta. La compilación del proyecto sin estas actualizaciones produce errores de compilación.
Actualizaciones necesarias
En el archivo raíz Web.config, agregue una nueva entrada <appSettings> con la clave webPages:Version y el valor 1.0.0.0.
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y luego seleccione Descargar proyecto. Después, vuelva a hacer clic con el botón derecho en el nombre y seleccione Editar ProjectName.csproj.
Busque las siguientes referencias de ensamblado:
<Reference Include="System.Web.WebPages"/>
<Reference Include="System.Web.Helpers" />
Reemplácelas por lo siguiente:
<Reference Include="System.Web.WebPages, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/>
<Reference Include="System.Web.Helpers, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando, haga clic con el botón derecho en el proyecto y después seleccione Volver a cargar.
Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másCursos
Módulo
Compilación de una API web con una API mínima, ASP.NET Core y .NET - Training
Vea cómo crear una API web con .NET. También aprenderá a configurar distintas rutas para controlar la lectura y la escritura.