|
Membre habitué
Inscription : décembre 2007 Messages : 684 Détails du profil  Informations personnelles : Localisation : France, Seine Maritime (Haute Normandie) Informations forums :
Inscription : décembre 2007 Messages : 684 Points : 146 Points : 146
|
Je suis tout à fait d'accord avec toi, malheureusement l'entreprise m'impose des contraintes, je dois donc faire avec :/.
J'ai réussi à faire apparaitre mes éléments, je cherche donc désormais à faire du modelbinding !
mon modèle :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace LivDevis.Models
{
public class ContactModel
{
// Form
[Display(Name = "Civilité")]
public Civility Civility { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "DisplayFirstName", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string FirstName { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "DisplayLastName", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string LastName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "DisplayEmail", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string From { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "DisplayCompany", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string Company { get; set; }
[DataType(DataType.Url)]
[Display(Name = "DisplayWebSite", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string WebSite { get; set; }
// Mail
[Required]
[DataType(DataType.Text)]
[Display(Name = "DisplaySubject", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
public string Subject { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "DisplayBody", ResourceType = typeof(LivDevis.Resources.Models.ContactModel))]
[MaxLength(1000)]
public string Body { get; set; }
}
} |
mon controller :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| using DevExpress.Web.ASPxHtmlEditor;
using LivDevis.ClassLibrary;
using LivDevis.ClassLibrary.Classes;
using LivDevis.ClassLibrary.Entities;
using LivDevis.Filters;
using LivDevis.Helpers.DevExpress;
using LivDevis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
namespace LivDevis.Controllers
{
[AuthorizeUnauthentificated]
public partial class HomeController : BaseController
{
public override string ControllerName { get { return "Home"; } }
public ActionResult Index()
{
return View();
}
public ActionResult Prices()
{
return View();
}
public ActionResult About()
{
return View();
}
public ActionResult Contact()
{
ViewData["ActiveView"] = HtmlEditorView.Design;
Session["Options"] = new HtmlEditorFeaturesOptions();
ContactModel ContactModel = new ContactModel();
return DevExpressView("Contact", ContactModel);
}
[HttpPost]
public ActionResult Contact(ContactModel mail)
{
return View();
}
public ActionResult BodyPartial()
{
return PartialView("DevExpress.Contact.BodyPartial");
}
public ActionResult BodyImageUpload()
{
HtmlEditorExtension.SaveUploadedImage("Body", HtmlEditorHelper.ImageUploadValidationSettings, HtmlEditorHelper.UploadDirectory);
return null;
}
public ActionResult BodyImageSelectorUpload()
{
HtmlEditorExtension.SaveUploadedImage("Body", HtmlEditorHelper.ImageSelectorSettings);
return null;
}
}
} |
une partie de ma page Layout :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<title>@ViewBag.Title - Mon application ASP.NET MVC</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<!-- CSS -->
@Styles.Render("~/Content/_Unauthentificated")
@RenderSection("css", required: false)
<!-- jQuery -->
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<!-- modernizr -->
@Scripts.Render("~/bundles/modernizr")
@RenderSection("jquery", required: false)
<!-- DevExpress -->
@Styles.Render("~/Content/DevExpress")
@if(Utils.IsIE6()) {
@Styles.Render("~/Content/DevExpress/IE6")
}
@Html.DevExpress().GetStyleSheets(
new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
new StyleSheet { ExtensionSuite = ExtensionSuite.Editors },
new StyleSheet { ExtensionSuite = ExtensionSuite.HtmlEditor },
new StyleSheet { ExtensionSuite = ExtensionSuite.GridView },
new StyleSheet { ExtensionSuite = ExtensionSuite.PivotGrid },
new StyleSheet { ExtensionSuite = ExtensionSuite.Chart },
new StyleSheet { ExtensionSuite = ExtensionSuite.Report },
new StyleSheet { ExtensionSuite = ExtensionSuite.Scheduler },
// Default theme for some demos
new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout, Theme = "Default" }
)
@Scripts.Render("~/bundles/jqueryval", "~/bundles/MicrosoftAjax")
@Html.DevExpress().GetScripts(
new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
new Script { ExtensionSuite = ExtensionSuite.HtmlEditor },
new Script { ExtensionSuite = ExtensionSuite.GridView },
new Script { ExtensionSuite = ExtensionSuite.PivotGrid },
new Script { ExtensionSuite = ExtensionSuite.Editors },
new Script { ExtensionSuite = ExtensionSuite.Chart },
new Script { ExtensionSuite = ExtensionSuite.Report },
new Script { ExtensionSuite = ExtensionSuite.Scheduler }
)
<!-- Scripts -->
<script>
<!-- Définition des variables d'environnement -->
var _Culture = "@this.ViewContext.RouteData.Values["lang"].ToString()";
</script>
@Scripts.Render("~/bundles/_Unauthentificated/Layout")
@RenderSection("Scripts", required: false)
</head> |
ma vue :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| @model LivDevis.Models.ContactModel
@using LivDevis.Helpers
@using LivDevis.Models
@using System.Globalization
@using System.Web.UI.WebControls
@{
ViewBag.Title = @LivDevis.Resources.Views.Home.Contact.Title;
Layout = "~/Views/Shared/_Unauthentificated/Layout.cshtml";
}
@section css {
@Styles.Render("~/Content/_Unauthentificated/Home/Contact")
}
@section jquery {
@Scripts.Render("~/bundles/jqueryval")
}
@section Scripts {
@Scripts.Render("~/bundles/_Unauthentificated/Contact")
}
@section featured {
}
<section id="info">
<div class="onleft">
<h2>Cras elementum ultrices diam</h2>
<h3>Cras elementum ultrices diam</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus.</p>
<h3>Cras elementum ultrices diam</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus.</p>
<h3>Cras elementum ultrices diam</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus.</p>
</div>
<div class="onright">
@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { autocomplete = "off" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>@ViewBag.Title</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Civility)
</div>
<div class="editor-field">
<div id="Civility">
@{
int i = 0;
foreach (Enum c in Enum.GetValues(typeof(Civility)))
{
string _id = string.Concat("civility-", c);
string _description = c.Description();
switch (i == 0)
{
case true :
@Html.RadioButtonFor(model => model.Civility, c, new { id = _id, @checked = "checked" })
break;
case false :
@Html.RadioButtonFor(model => model.Civility, c, new { id = _id})
break;
}
@Html.LabelFor(model => model, _description, new { @for = _id })
i++;
}
}
</div>
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.FirstName, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplayFirstName })
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.LastName, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplayLastName })
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.From, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplayEmail })
@Html.ValidationMessageFor(model => model.From)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Company, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplayCompany })
@Html.ValidationMessageFor(model => model.Company)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.WebSite, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplayWebSite })
@Html.ValidationMessageFor(model => model.WebSite)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Subject, new { placeholder = LivDevis.Resources.Models.ContactModel.DisplaySubject })
@Html.ValidationMessageFor(model => model.Subject)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Body)
</div>
<div class="editor-field">
@Html.Partial("DevExpress.Contact.BodyPartial", Model)
@Html.ValidationMessageFor(model => model.Body)
</div>
<p>
<input type="submit" value="@LivDevis.Resources.Views.Home.Contact.ButtonSendMail" class="button blue" />
</p>
</fieldset>
}
</div>
</section> |
et ma vue partielle :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| @Html.DevExpress().HtmlEditor(
settings =>
{
/*if (Model != null)
{
settings.Html = Model.Body;
}*/
settings.Name = "Body";
settings.CallbackRouteValues = new { Controller = "Home", Action = "BodyPartial" };
settings.Width = 646;
settings.SettingsImageUpload.UploadCallbackRouteValues = new { Controller = "Home", Action = "BodyImageUpload" };
settings.SettingsImageUpload.UploadImageFolder = HtmlEditorHelper.UploadDirectory;
settings.SettingsImageUpload.ValidationSettings.Assign(HtmlEditorHelper.ImageUploadValidationSettings);
HtmlEditorHelper.SetHtmlEditorImageSelectorSettings(settings.SettingsImageSelector);
if (ViewData["ActiveView"] != null)
{
settings.ActiveView = (HtmlEditorView)ViewData["ActiveView"];
}
if (ViewData["Html"] != null)
{
settings.Html = (string)ViewData["Html"];
}
if(Session["Options"] != null)
{
HtmlEditorFeaturesOptions options = (HtmlEditorFeaturesOptions)Session["Options"];
settings.SettingsHtmlEditing.AllowScripts = options.AllowScripts;
settings.SettingsHtmlEditing.AllowIFrames = options.AllowIFrames;
settings.SettingsHtmlEditing.AllowFormElements = options.AllowFormElements;
settings.SettingsHtmlEditing.UpdateDeprecatedElements = options.UpdateDeprecatedElements;
settings.SettingsHtmlEditing.UpdateBoldItalic = options.UpdateBoldItalic;
settings.SettingsHtmlEditing.EnterMode = options.EnterMode;
settings.Settings.AllowContextMenu = options.AllowContextMenu;
settings.Settings.AllowDesignView = options.AllowDesignView;
settings.Settings.AllowHtmlView = options.AllowHtmlView;
settings.Settings.AllowPreview = options.AllowPreview;
}
Action<object, DevExpress.Web.ASPxFileManager.FileManagerActionEventArgsBase> editHandler = (sender, e) =>
{
((DevExpress.Web.ASPxFileManager.FileManagerActionEventArgsBase)e).Cancel = Utils.IsSiteMode;
((DevExpress.Web.ASPxFileManager.FileManagerActionEventArgsBase)e).ErrorText = Utils.GetReadOnlyMessageText();
};
settings.ImageSelectorItemDeleting = (sender, e) => editHandler(sender, e);
settings.ImageSelectorFolderCreating = (sender, e) => editHandler(sender, e);
settings.ImageSelectorFileUploading = (sender, e) => editHandler(sender, e);
settings.ImageSelectorItemMoving = (sender, e) => editHandler(sender, e);
settings.ImageSelectorItemRenaming = (sender, e) => editHandler(sender, e);
}).Bind(Model.Body).GetHtml() |
Malheureusement, lors de mon submit le texte saisi n'apparait pas dans ma variable dans la propriété "Body".
Il n'y a pas non plus de message d'erreur lors de la validation du modèle. Qu'ai-je oublié ?
|