MonoDevelop ASP.NET con Razor

Cuando empece a desarrollar con ASP.NET MVC,  pero como soy un usuario de Linux intente probarlo el IDE monoDevelop y me encontré con un problema las vistas funcionaban con aspx no con el view engine Razor, un gran problema ya que no puedes aprovechar las ventajas de usar esta tecnología.

Las ventajas las verán mientras lo usan (si son principiantes como yo), como es reducir la cantidad de código html necesario, usar layouts, y no es un nuevo lenguaje que aprender.

Así que les traigo un pequeño tutorial de como usar Razor  en monoDevelop.

primero necesitaran las "liberias" para que funcione, lo pueden obtener del Vistual Studio, ya que cuando se compila un proyecto estos se copian dentro del proyecto, o las puedes descargar desde aqui.
Ahora hay que agregarlos al proyecto editando las referencias:
y quitamos el paquete "System.Web.Mvc" que pone por default mono. 

Ahora solo falta un detalle, en el archivo de Web.config, hay que dejarlo como sigue y listo ya funciona :)
<configuration>
    <configsections>
        <sectiongroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="host" requirepermission="false" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="pages" requirepermission="false" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        </section></section></sectiongroup>
        <sectiongroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectiongroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section allowdefinition="MachineToApplication" name="scriptResourceHandler" requirepermission="false" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <sectiongroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section allowdefinition="Everywhere" name="jsonSerialization" requirepermission="false" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section allowdefinition="MachineToApplication" name="profileService" requirepermission="false" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section allowdefinition="MachineToApplication" name="authenticationService" requirepermission="false" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section allowdefinition="MachineToApplication" name="roleService" requirepermission="false" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                </section></section></section></section></sectiongroup>
            </section></sectiongroup>
        </sectiongroup>
    </configsections>
    <system .web.webpages.razor="">
        <host factorytype="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <pages pagebasetype="System.Web.Mvc.WebViewPage">
          <namespaces>
            <add namespace="System.Web.Mvc">
            <add namespace="System.Web.Mvc.Ajax">
            <add namespace="System.Web.Mvc.Html">
            <add namespace="System.Web.Routing">
          </add></add></add></add></namespaces>
        </pages>
    </host></system>
    <appsettings>
        <add key="webpages:Enabled" value="false">
    </add></appsettings>
    <system .web="">
        <compilation debug="false" defaultlanguage="C#">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
                <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
            </add></add></add></add></add></add></add></add></assemblies>
        </compilation>
        <customerrors mode="RemoteOnly">
        </customerrors>
        <pages pagebasetype="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageparserfiltertype="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" usercontrolbasetype="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validaterequest="false">
            <controls>
                <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagprefix="mvc">
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.UI" tagprefix="asp">
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.UI.WebControls" tagprefix="asp">
            </add></add></add></controls>
            <namespaces>
                <add namespace="System.Web.Mvc">
                <add namespace="System.Web.Mvc.Ajax">
                <add namespace="System.Web.Mvc.Html">
                <add namespace="System.Web.Routing">
                <add namespace="System.Linq">
                <add namespace="System.Collections.Generic">
            </add></add></add></add></add></add></namespaces>
        </pages>
        <authorization>
            <allow users="*">
        </allow></authorization>
        <httphandlers>
            <remove path="*.asmx" verb="*">
            <add path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" verb="*">
            <add path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" verb="*">
            <add path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" verb="GET,HEAD">
            <add path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" verb="*">
        </add></add></add></add></remove></httphandlers>
        <httpmodules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        </add></add></httpmodules>
        <trace enabled="false" localonly="true" pageoutput="false" requestlimit="10" tracemode="SortByTime">
        <globalization requestencoding="utf-8" responseencoding="utf-8">
    </globalization></trace></system>
    <system .codedom="">
        <compilers>
            <compiler extension=".cs" language="c#;cs;csharp" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warninglevel="4">
                <provideroption name="CompilerVersion" value="v3.5">
                <provideroption name="WarnAsError" value="false">
            </provideroption></provideroption></compiler>
            <compiler extension=".vb" language="vb;vbs;visualbasic;vbscript" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warninglevel="4">
                <provideroption name="CompilerVersion" value="v3.5">
                <provideroption name="OptionInfer" value="true">
                <provideroption name="WarnAsError" value="false">
            </provideroption></provideroption></provideroption></compiler>
        </compilers>
    </system>
    <system .webserver="">
        <validation validateintegratedmodeconfiguration="false">
        <handlers>
          <remove name="BlockViewHandler">
          <add name="BlockViewHandler" path="*" precondition="integratedMode" type="System.Web.HttpNotFoundHandler" verb="*">
        </add></remove></handlers>
    </validation></system>
    <system .web.extensions="">
</system></configuration>

Comentarios

Entradas más populares de este blog

Instalación de PROXMOX (por usb)

Firmar y publicar una app de Cordova en Play Store

Método PERT.