我看到一個類似的帖子,試圖用Dinner例子來做同樣的事情,但是他解決了他的問題似乎有點深刻。基本上我cxan得到的驗證工作得很好,但它只適用於Firefox。在IE7加載頁面時,我立即得到一個警告框,其中包含以下消息:「錯誤:元素標題不在窗體中」......很明顯,它是在這裏的形式,如果需要,我可以發佈實際呈現的標記從視圖源來顯示這一點。任何想法,我可以做什麼來解決這個問題將不勝感激!使用xVal和ViewModel
基本上我只是想確保我的NewsPost有一個標題和一個正文。因爲我把它包裝在ViewModel中,所以IE瀏覽器並不完全理解這一點。也許我錯了。
我正在使用xVal進行驗證。我傳入一個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;
}
}
這是我的觀點:
<%@ 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>()%>
最後我的帖子行動:
[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();
}
}
凹凸......任何人有任何想法? – Gabe 2009-10-08 16:40:29
這實際上碰到了這個問題嗎?我不認爲這對SO有效。 – 2010-09-18 16:29:44