We suggest the following:
-
Getting Started to spare a long time !
Innovacall ASP.net MVC4 Framework can be the base of any MVC Project, follow those instructions to start (10 minutes if your Visual Studio is MVC4 Ready and your SQL Server 2008R2 already installed). Send your feedback about intalling and starting your project Dont forget to install Emit mapper and Log4Net ! -
Wait for french and english video tutorials
Comming soon ! -
We can host your project for free !
If you use our Framework, we can host your project for free (if your project size and resources needs are raisonnables). -
Become a contributor !
Contact me to become a contributor (Visual Studio Pro or better and Codeplex account required)
I sincerly hope, you will enjoy...
Laurent Jordi
- View
- Layout
- Controller
- Model
- View JS
- Layout JS
- Script G View
- View Generated JS
1: @using InnovaApp.Layers.ResourcesLayer.Properties
2: @model InnovaApp.Portals.MVC4Portal.Models.HomeModel
3: @section featured {
4: <section class="featured">
5: <div class="content-wrapper">
6: <hgroup class="title">
7: <h1>@Model._PageTitle</h1>
8: <h2>@Model._PageMessage</h2>
9: </hgroup>
10: <p class="redText">
11: Warning, I removed Authorize decoration in controllers to let Search Engine to reference pages. In your code you have to add Athorize decoration in private pages.
12: </p>
13: <p>
14: To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
15: http://asp.net/mvc</a>. The page features
16: <mark>videos, tutorials,
17: and samples</mark>
18: to help you get the most from ASP.NET MVC. If you have any questions about ASP.NET
19: MVC visit <a href="http://forums.asp.net/1146.aspx/1?MVC" title="ASP.NET MVC Forum">
20: ASP.NET MVC Forum</a>.
21: </p>
22: </div>
23: </section>
24: }
25: <h3>
26: We suggest the following:</h3>
27: <ol class="round">
28: <li class="one">
29: <h5>
30: Getting Started to spare a long time !</h5>
31: Innovacall ASP.net MVC4 Framework can be the base of any MVC Project, follow <a href="http://innovacallframework.codeplex.com/wikipage?title=How%20to%20use%20Innova%20Framework%20%28easy%20for%20MCV%203%20or%204%20Developpers%2c%20a%20video%20will%20be%20availlable%20soon%29&version=1">
32: those instructions</a> to start (10 minutes if your Visual Studio is MVC4 Ready
33: and your SQL Server 2008R2 already installed). <a href="mailto:frameworkinstallfeedback@innovacall.com">
34: Send your feedback about intalling and starting your project</a> Dont forget
35: to install Emit mapper and Log4Net ! </li>
36: <li class="two">
37: <h5>
38: Wait for french and english video tutorials</h5>
39: Comming soon ! </li>
40: <li class="three">
41: <h5>
42: We can host your project for free !</h5>
43: If you use our Framework, we can host your project for free (if your project size
44: and resources needs are raisonnables).</li>
45: <li class="four">
46: <h5>
47: Become a contributor !</h5>
48: <a href="mailto:contributeframework@innovacall.com">Contact me to become a contributor</a>
49: (<a href="http://www.microsoft.com/visualstudio/en-us" target="_blank">Visual Studio
50: Pro</a> or better and <a href="https://www.codeplex.com/site/register?associate=None"
51: target="_blank">Codeplex account required)</a> </li>
52: </ol>
53: <p>
54: I sincerly hope, you will enjoy...
55: </p>
56: <p>
57: Laurent Jordi
58: </p>
59:
60: @if (Model.InvolvedCode != null)
61: {
62: if (Model.InvolvedCode.Count > 0)
63: {
64: <section>
65: <span class="involvedCode">@Resources.Views_All_InvolvedCode</span>
66: <div id="divInvolvedCode">
67: @Html.Partial("_InvolvedCode", Model.InvolvedCode)
68: </div>
69: </section>
70: }
71: }
1: @using INNOVACALL.Framework.Common
2: @using InnovaApp.Layers.ResourcesLayer.Properties
3: @{
4: InnovaApp.Layers.CommonLayer.Models._Models_Base layoutModel = (InnovaApp.Layers.CommonLayer.Models._Models_Base)Model;
5: }
6: <!DOCTYPE html>
7: <html lang="en">
8: <head>
9: <meta charset="utf-8" />
10: <meta name="viewport" content="width=device-width" />
11: @foreach (var item in layoutModel._Meta)
12: {
13: <meta name="@item.Key.ToString()" content="@item.Value" />
14: }
15: <title>@layoutModel._PageTitle</title>
16: <link href="@Url.Content("~/CSSG/Site.css")" rel="stylesheet" type="text/css" />
17: <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
18: @Scripts.Render("~/bundles/modernizr")
19: @if (layoutModel._SpecificCSS != null)
20: {
21: foreach (var cssReference in layoutModel._SpecificCSS)
22: {
23: <link href="@Url.Content("~/Content/" + cssReference)" rel="stylesheet" type="text/css" />
24: }
25: }
26: @if (layoutModel._ExternalCSS != null)
27: {
28: foreach (var cssReference in layoutModel._ExternalCSS)
29: {
30: <link href="@cssReference" rel="stylesheet" type="text/css" />
31: }
32: }
33: @foreach (var jsReference in layoutModel._SpecificJS)
34: {
35: <script src="@Url.Content("~/Scripts/" + jsReference)" type="text/javascript"></script>
36: }
37: </head>
38: <body>
39: <div class="content-wrapper full-height page shadow">
40: <header>
41: <div class="content-wrapper">
42: <div class="float-left">
43: <a href="/" title="Home">
44: <img src="../../Images/LogoInnovacall.png" alt="Innovacall MVC Framework" class="LogoInnovacall" />
45: <img src="../../Images/ASPNetOpenSourceFramework.png" alt="Innovacall ASP.net Open Source Framework"
46: class="LogoInnovacallMVCFramework" />
47: </a>
48: </div>
49: <div class="float-right">
50: <section id="login">
51: @Html.Partial("_LoginPartial")
52: </section>
53: <a href="http://www.microsoft.com/bizspark/" title="Microsoft Bizspark" target="_blank">
54: <img src="../../Images/BizSpark_Alumini.png" alt="Innovacall ASP.net Open Source Framework"
55: class="MicrosoftBizSparkAlumini" />
56: </a>
57: </div>
58: </div>
59: </header>
60: <div id="body" class="content-wrapper rounded">
61: @if (layoutModel._DisplayMenus)
62: {
63: <nav class="content-wrapper k-content">
64: @Html.Partial("_MenuBar", layoutModel)
65: </nav>
66: }
67: @RenderSection("featured", required: false)
68: <section class="content-wrapper main-content clear-fix">
69: @RenderBody()
70: </section>
71: </div>
72: <footer>
73: <div class="content-wrapper">
74: <table class="tblFooter">
75: <tr>
76: <td class="tdCopyright">
77: © @DateTime.Now.Year - Innovacall
78: </td>
79: <td class="tdCodeplex">
80: source code : <a href="http://innovacallframework.codeplex.com" target="_blank">http://innovacallframework.codeplex.com</a>
81: </td>
82: <td class="tdContactUs">
83: <a href="mailto:innovacallframework@innovacall.com">Contact us</a>
84: </td>
85: </tr>
86: </table>
87: </div>
88: </footer>
89: </div>
90: <!--KendoUI Add-->
91: <style scoped>
92: #customValue
93: {
94: line-height: 16px;
95: width: 60px;
96: float: none;
97: margin: -3px 0 0 5px;
98: }
99: </style>
100: <!--/KendoUI Add-->
101: <div id="dialogMessage">
102: </div>
103: </body>
104: <script src="/Scripts/InnovacallJS/_Layout/_Layout.js" type="text/javascript"></script>
105: @if (layoutModel._SpecificJqueryJS != null)
106: {
107: foreach (var specificJqueryJSReference in layoutModel._SpecificJqueryJS)
108: {
109: string prefix = string.Empty;
110: if (!specificJqueryJSReference.StartsWith("http"))
111: {
112: prefix = "~/Scripts/";
113: }
114: <script src="@Url.Content(prefix + specificJqueryJSReference)" type="text/javascript"></script>
115: }
116: }
117: @if (layoutModel._DynamicJqueryJS != null)
118: {
119: foreach (var dynamicJqueryJS in layoutModel._DynamicJqueryJS)
120: {
121: <script src="@Url.Content("~" + dynamicJqueryJS)" type="text/javascript"></script>
122: }
123: }
124: <script type="text/javascript">
125: @{
126: foreach (string variable in layoutModel._JSVariables)
127: {
128: @Html.Raw(variable);
129: }
130: }
131: $(document).ready(function () {
132: $.fn.DocReady();
133: });
134: </script>
135: </html>
1: using System.Web.Mvc;
2: using InnovaApp.Layers.DataLayer;
3: using InnovaApp.Layers.ResourcesLayer.Properties;
4: using InnovaApp.Portals.MVC4Portal.Models;
5: using INNOVACALL.Framework.Common;
6: using INNOVACALL.Framework.Common.CodeFormatting;
7: using INNOVACALL.Framework.Common.Models;
8: using INNOVACALL.Framework.Common.MVCHelpers;
9: using System;
10:
11: namespace InnovaApp.Portals.MVC4Portal.Controllers
12: {
13: public class HomeController : _Controllers_Base<HomeModel>
14: {
15: protected override void Initialize(System.Web.Routing.RequestContext requestContext)
16: {
17: base.eMethodBase = "InnovaApp.Portals.InnovaAppFrontOfficePortal.Controllers.HomeController";
18: base.specificCssCollection = new string[] { "_FormCommon.css", "Views/Home.css", "ClientComponents/CodeFormatting/csharp.css", "ClientComponents/KendoUI/kendo.common.min.css", "ClientComponents/KendoUI/kendo.blueopal.min.css" };
19: base.specificJSCollection = null;
20: base.dynamicJSCollection = new string[] { "/ScriptsG/inoHomeDynamic.js" };
21: base.specificJqueryJSCollection = new string[] { "ClientComponents/KendoUI/kendo.web.min.js", "InnovacallJS/Home/Home.js" };
22: base.externalCSS = null;
23: base.Meta.Add(enMeta.Description, Resources.View_Home_Meta_Description);
24: base.Meta.Add(enMeta.Keywords, Resources.View_Home_OrderWithDetails_Meta_Keywords);
25: base.Meta.Add(enMeta.Subject, Resources.View_Home_OrderWithDetails_Meta_Subject);
26:
27: base.Initialize(requestContext);
28: }
29:
30: [HttpGet, CacheManager(enCacheMode.NoCache)] //Manage your cache
31: public ActionResult Index()
32: {
33: //NEVER USES VIEW BAG AGAIN !
34: //ViewBag.Message = "Modify this template to kick-start your ASP.NET MVC application.";
35: using (DataRepositories _dataContext = new DataRepositories())
36: {
37: base.InitView(
38: Resources.View_Home_PageTitle,
39: string.Empty,
40: specificCssCollection,
41: specificJSCollection,
42: dynamicJSCollection,
43: specificJqueryJSCollection,
44: jsVariables,
45: externalCSS,
46: Meta,
47: _dataContext,
48: true);
49: }
50:
51:
52: ContentData.InvolvedCode = new InvolvedCodeModel();
53: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.Html, TabStripName = "View", TabStripContent = "/Views/Home/Index.cshtml" });
54: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.Html, TabStripName = "Layout", TabStripContent = "/Views/Shared/_Layout.cshtml" });
55: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.cSharp, TabStripName = "Controller", TabStripContent = "/Controllers/HomeController.cs" });
56: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.cSharp, TabStripName = "Model", TabStripContent = "/Models/HomeModel.cs" });
57: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.Javascript, TabStripName = "View JS", TabStripContent = "/Scripts/InnovacallJS/Home/Home.js" });
58: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.Javascript, TabStripName = "Layout JS", TabStripContent = "/Scripts/InnovacallJS/_Layout/_Layout.js" });
59: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.Html, TabStripName = "Script G View", TabStripContent = "/Views/ScriptsG/inoHomeDynamic.cshtml" });
60: ContentData.InvolvedCode.Add(new INNOVACALL.Framework.Common.Models.MetaModels.CodeFile_MetaModel() { Language = enCodeLanguage.GeneratedJavascript, TabStripName = "View Generated JS", TabStripContent = "/ScriptsG/inoHomeDynamic.js" });
61: RenderCodeFiles(ContentData.InvolvedCode);
62:
63: return View(ContentData);
64: }
65: }
66: }
1: using INNOVACALL.Framework.Common.Models;
2:
3: namespace InnovaApp.Portals.MVC4Portal.Models
4: {
5: public class HomeModel : _Models_Base
6: {
7: public InvolvedCodeModel InvolvedCode { get; set; }
8:
9: public HomeModel()
10: {
11: this.InvolvedCode = null;
12: }
13: }
14: }
1: //INNOVACALL FRAMEWORK MUST BE IN ALL VIEW JAVASCRIPT
2: $.fn.DocReady = function () {
3: $.fn.PrepareLayoutMenus();
4: $.fn.TabifyCodeFiles();
5: //Add call to execute when document is ready
6: }
7:
8: $.fn.MainAjaxSuccess = function (a, b, c) {
9: if (a.ScriptToExecute != null) {
10: eval(a);
11: }
12: }
1: $.fn.kendoMenuOpenFixup = function (e) {
2: var evt = e;
3: }
4:
5: $.fn.PrepareLayoutMenus = function () {
6: $("#layoutMenu").kendoMenu({
7: open: $.fn.kendoMenuOpenFixup
8: });
9: }
10:
11: //------------------Ouvre la dialogBox----------------
12: $.fn.jqDialog = function (idDiv, titre, redirection) {
13: var dialogBox = $(idDiv);
14: $(dialogBox).hide();
15: $(dialogBox).dialog({
16: title: titre,
17: autoOpen: false,
18: resizable: false,
19: modal: true,
20: minHeight: 450,
21: minWidth: 800,
22: buttons: [
23: {
24: text: "Ok",
25: click: function () {
26: if (redirection != null) {
27: $.fn.NavigateTo(redirection);
28: }
29: $(this).dialog("close");
30: }
31: }
32: ],
33: open: function (event, ui) { }
34: });
35: };
36: //------------------Appel l'ouverture de la dialogBox----------------
37: $.fn.jqDialogConfirm = function (title, message, confirmButtonTitle, cancelButtonTitle, okFunction) {
38: var dialogBox = $('#dialogMessage');
39: dialogBox.text(message);
40: $(dialogBox).hide();
41: $(dialogBox).dialog({
42: title: title,
43: autoOpen: false,
44: resizable: false,
45: modal: true,
46: minHeight: 200,
47: minWidth: 350,
48: buttons: [
49: {
50: text: confirmButtonTitle,
51: click: okFunction
52: }
53: ,
54: {
55: text: cancelButtonTitle,
56: click: function () { $('#dialogMessage').dialog('close'); }
57: }
58: ]
59: });
60: $('#dialogMessage').dialog('open');
61: }
62: //------------------Appel l'ouverture de la dialogBox----------------
63: $.fn.jqDialogMessageOpen = function () {
64: $.fn.jqDialog('#dialogMessage', 'Alerte Erreur');
65: $('#dialogMessage').dialog('open');
66: }
67: //------------------Appel l'ouverture de la dialogBox----------------
68: $.fn.jqDialogAlert = function (title, message, redirection) {
69: $.fn.jqDialog('#dialogMessage', title, redirection);
70: $('.ui-dialog-content').text(message);
71: $('#dialogMessage').dialog('open');
72: }
73: //------------------Appel l'ouverture de la dialogBox pour une erreur----------------
74: $.fn.jqDialogErreur = function (divErreur, exception) {
75: $.fn.jqDialog("#dialogErreur", "Alerte Pop-Up");
76: $('.ui-dialog-title').fadeIn().text('Alerte Erreur');
77: $('.ui-dialog-content').fadeIn().text('Message d\'erreur : ' + exception);
78: };
79: //------------------Appel de la fonction jqDialogErreur en lui passant le nom du div----------------
80: $.fn.jqDialogErreurOpen = function (exception) {
81: var divErreur = '#GestionErreur';
82: $.fn.jqDialogErreur(divErreur, exception);
83: $(divErreur).dialog('open');
84: };
85: //------------------Serialise les objets d'une form----------------
86: $.fn.serializeObject = function () {
87: var obj = {};
88: $(":input[type='checkbox']").each(function (e) {
89: obj[this.name] = this.checked;
90: });
91: var o = {};
92: var a = this.serializeArray();
93: $.each(a, function () {
94: if (o[this.name] !== undefined) {
95: if (obj !== undefined) {
96: if (obj[this.name] !== undefined) {
97: o[this.name] = obj[this.name];
98: }
99: }
100: else {
101: if (!o[this.name].push) {
102: o[this.name] = [o[this.name]];
103: }
104: o[this.name].push(this.value || '');
105: }
106: }
107: else {
108: o[this.name] = this.value || '';
109: }
110: });
111: return o;
112: };
113: //------------------Navigate to the url----------------
114: $.fn.NavigateTo = function (url) {
115: window.location.href = url;
116: }
117:
118: //------------------Localisation du Datepicker----------------
119: jQuery(function ($) {
120: if ($.datepicker != null) {
121: $.datepicker.regional['fr'] = { clearText: 'Effacer', clearStatus: '',
122: closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
123: prevText: '<Préc', prevStatus: 'Voir le mois précédent',
124: nextText: 'Suiv>', nextStatus: 'Voir le mois suivant',
125: currentText: 'Courant', currentStatus: 'Voir le mois courant',
126: monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
127: 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
128: monthNamesShort: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun',
129: 'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc'],
130: monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année',
131: weekHeader: 'Sm', weekStatus: '',
132: dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
133: dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
134: dayNamesMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
135: dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
136: dateFormat: 'dd/mm/yy', firstDay: 0,
137: initStatus: 'Choisir la date', isRTL: false
138: };
139: $.datepicker.setDefaults($.datepicker.regional['fr']);
140: }
141: });
142:
143: $.fn.TabifyCodeFiles = function () {
144: $(".divCodeFilesTabStrip").kendoTabStrip({ theme: "Blue Opal" });
145: }
146:
147: //$.fn.defaultHandler = function (jqXHR, textStatus, errorThrown) {
148: // var data = JSON.parse(jqXHR.responseText);
149: // if (data && data.Url) {
150: // window.location = data.url;
151: // }
152: // else {
153: // // TODO: redirect to a fixed error location, alert, etc
154: // }
155: //};
156:
157: //$.ajaxSetup({
158: // 'type': 'POST',
159: // 'accepts': 'application/json',
160: // 'contentType': 'application/json',
161: // 'error': function (jqXHR, textStatus, errorThrown) {
162: // if (this[jqXHR.status]) {
163: // this[jqXHR.status](jqXHR, textStatus, errorThrown);
164: // }
165: // else {
166: // // No handlers were found, handle the situation in a global manner here
167: // }
168: // },
169: // '401': $.fn.defaultHandler,
170: // '403': $.fn.defaultHandler,
171: // '500': $.fn.defaultHandler
172: //});
173:
1: @model InnovaApp.Portals.MVC4Portal.Models.ScriptsGModels.inoScriptGModel
2: @{
3: this.Layout = string.Empty;
4: this.Response.ContentType = "text/javascript";
5: }
6: @foreach (var v in Model.Variables)
7: {
8: @Html.Raw("var " + v.Key + (!string.IsNullOrEmpty(v.Value.ToString()) ? " = '" + v.Value.ToString().Replace("'", "\\'") : "") + "';\n")
9: }
1:
2: var ScriptsGData_MainAjaxErrorTitle = 'An error has occurred ...';
3: var ScriptsGData_MsgConfirmDelete = 'Are you sure to want to delete this item?';
4: var ControllerName = 'Home';