[英]MVC3 validation problems
我有以下視圖,無法驗證Title和NewsContent。 標題驗證有效但新聞內容無效。 我該如何解決呢?
@model Foo.NewsViewModel
@{
ViewBag.Title = "Create";
}
@using (Html.BeginForm("Create", "News", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
<fieldset>
<legend>Category Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.News.Title)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.News.Title)
@Html.ValidationMessageFor(m => m.News.Title)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.News.NewsContent)
</div>
<div class="editor-field" id="container">
@Html.TextAreaFor(m => m.News.NewsContent)
@Html.ValidationMessageFor(m => m.News.NewsContent)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.News.Thumbnail)
</div>
<div class="editor-field">
<input type="file" name="files" id="thumbnail" />
</div>
<div class="editor-label">
@Html.LabelFor(m => m.News.Image)
</div>
<div class="editor-field">
<input type="file" name="files" id="original" />
</div>
<div class="editor-label">
@Html.Label("SelectedCategoryId")
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.SelectedCategoryId, Model.Categories)
</div>
<div class="editor-label">
Publish
</div>
<div class="editor-field">
@Html.CheckBoxFor(m => m.News.Published, new { @checked = "checked" })
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</div>
}
這是模型|:
public class News : IStorable
{
[Required]
[Display(Name = "Title")]
public virtual string Title { get; set; }
[Required]
[Display(Name = "Content")]
public virtual string NewsContent { set; get; }
......
問題:標題驗證有效但新聞內容無效。
驗證不起作用,因為使用Html.TextAreaFor()幫助器來呈現“NewsContent”屬性,
以下是使其工作的代碼:
將您的模型更改為:
使用[DataType]屬性裝飾'NewsContent'屬性,並將數據類型設置為'MultilineText'。 這將指示此屬性的編輯器應為多行文本輸入。
public class News : IStorable
{
[Required]
[Display(Name = "Title")]
public virtual string Title { get; set; }
[Required()]
[Display(Name = "Content")]
[DataType(DataType.MultilineText)]
public virtual string NewsContent { set; get; }
//....
}
在視圖中,使用Html.EditorFor()幫助程序而不是Html.TextAreaFor()作為“News.NewsContent”屬性。
//....
<div class="editor-label">
@Html.LabelFor(m => m.News.NewsContent)
</div>
<div class="editor-field" id="container">
@*@Html.TextAreaFor(m => m.News.NewsContent)*@
@Html.EditorFor(m => m.News.NewsContent)
@Html.ValidationMessageFor(m => m.News.NewsContent)
</div>
//....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.