J'ai vu un post similaire qui essayait de faire la même chose avec l'exemple Dinner, mais il a corrigé son problème, le mien semble être un peu plus profond. Fondamentalement, je peux obtenir la validation de travailler très bien, mais cela ne fonctionne que dans Firefox. Dans IE7 lorsque la page se charge, j'obtiens immédiatement une boîte d'alerte avec le message suivant: "Erreur: Le titre de l'élément n'est pas sous une forme" ... Clairement c'est dans le formulaire ici, Si nécessaire je peux poster le balisage réellement rendu de voir la source pour le montrer. Toute idée sur ce que je peux faire pour résoudre ce problème serait très appréciée! Fondamentalement, j'essaie juste de m'assurer que mon NewsPost a un titre et un corps. Depuis que je l'ai enveloppé dans le ViewModel je pense que IE ne comprend pas tout à fait cela. Peut-être que je me trompe. J'utilise xVal pour ma validation. Je passe un ViewModel en tant que mon modèle. Mon ViewModel ressemble à ceci:Utiliser xVal et un ViewModel
public class NewsAdminViewData : ViewModel
{
public NewsPost NewsPost { get; set; }
public List<SelectListItem> NewsItem { get; set; }
public List<SelectListItem> NewsGroup { get; set; }
public NewsAdminViewData(List<SelectListItem> newsItem, List<SelectListItem> newsGroup, NewsPost newsPost)
{
this.NewsItem = newsItem;
this.NewsGroup = newsGroup;
this.NewsPost = newsPost;
}
}
Voici mon avis:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MVCApp.Models.ViewModels.News.NewsAdminViewData>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm())
{%>
<div class="moduleContainer">
<div class="moduleTitle">
Create News Item
</div>
<div class="moduleContent">
<div>
<div>
Title:</div>
<div>
<%= Html.TextBox("Title") %>
</div>
</div>
<div>
<div>
</div>
<div>
<%= Html.TextArea("Body") %>
</div>
</div>
<div>
<div>
News Group:
</div>
<div>
<%= Html.DropDownList("NewsGroup")%>
</div>
</div>
<div>
<div>
News Item:
</div>
<div>
<%= Html.DropDownList("NewsItem") %>
</div>
</div>
</div>
<div class="moduleFooter">
<%= Html.SubmitButton("btnSubmit", "Add News Post", null, "To add this news post click here.", "#ffd40f")%>
</div>
</div>
<% } %>
<%= Html.ClientSideValidation<NewsPost>()%>
Et enfin mon action post:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Create(/*FormCollection collection*/ NewsPost np)
{
NewsPost entity = this.reposNewsPost.New();
try
{
entity.Title = np.Title;
entity.NewsPostGUID = System.Guid.NewGuid();
entity.DateAdded = DateTime.Now;
entity.DateUpdated = DateTime.Now;
entity.Body = np.Body;
UpdateModel(entity);
this.reposNewsPost.Insert(entity);
this.reposNewsPost.SubmitChanges();
return RedirectToAction("Index");
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, "NewsPost");
return ModelState.IsValid ? RedirectToAction(MVC.News.Actions.Create)
: (ActionResult)View();
}
}
Bump ... Quelqu'un at-il idées ??? – Gabe
Est-ce que cela a réellement fait grimper la question? Je ne pense pas que cela a fonctionné sur SO. –