1

TitleとNewsContentで検証できない次のビューがあります。タイトルの検証は機能しますが、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; }
......
4

1 に答える 1

3

問題:タイトルの検証は機能しますが、NewsContentは機能しません。

Html.TextAreaFor()ヘルパーを使用して「NewsContent」プロパティをレンダリングするため、検証は機能しません。

これを機能させるためのコードは次のとおりです。

モデルを次のように変更します。

'NewsContent'プロパティを[DataType]属性で装飾し、データ型を'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; }
    //....
}

ビューでは、「News.NewsContent」プロパティにHtml.TextAreaFor()の代わりにHtml.EditorFor()ヘルパーを使用します。

//....
<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>
//....
于 2012-04-18T18:35:44.560 に答える