1

ASP.NET MVC 4 アプリケーションを開発しているときに、保存したイメージを更新する際に問題が発生しました。基本的に、ユーザーが編集タブを選択すると、以前に入力したコンテンツにリダイレクトされます。そのようなコンテンツのアイテムの 1 つに画像があり、編集メニューで既存の画像を置き換えることを選択できます。他のコンテンツは正しく更新されていますが、画像は同じままです。「編集」ActionResult にブレークポイントを配置すると、渡されたモデルの画像値が null として表示されますか? newsArticle.ArticleImage = Null

参考までに - イメージはバイト配列として保存されます。

何か不足していますか?

コントローラ....

    [HttpPost]
    public ActionResult Edit(NewsArticle newsArticle, int id, HttpPostedFileBase Article)
    {
        try
        {
            if (ModelState.IsValid)
            {


             NewsArticle savedArticle= _newsArticle.Get(id);

             savedArticle.Body = newsArticle.Body;
             savedArticle.Title = newsArticle.Title;

             if (newsArticle.ArticleImage == null)
             {
                 newsArticle.ArticleImage = savedArticle.ArticleImage;
             }
             else
             {
                 using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
                 {
                     newsArticle.ArticleImage = binaryReader.ReadBytes(Request.Files[0].ContentLength);
                 }

                 savedArticle.ArticleImage = newsArticle.ArticleImage;
             }

             if (newsArticle.ImageName == null)
             {
                 newsArticle.ImageName = savedArticle.ImageName;
             }
             else
             {
                 string imgeName = Path.GetFileName(Article.FileName);

                 savedArticle.ImageName = imgeName;

             }

             _uow.SaveChanges();
                return RedirectToAction("Index");
            }
        }
        catch (System.Data.DataException)
        {
            //Log th error(add a variable name after DataExpection)
            ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
        }

        return View(newsArticle);
    }

意見..........

         @using (Html.BeginForm("Edit", "Admin", FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-horizontal", id = "newsEditForm" }))
{

    @Html.ValidationSummary()

    @Html.HiddenFor(model => model.ID)


    <div class="control-group">
        <label class="control-label">Posted on :</label>
        <div class="controls">
            <span class="text">@Model.DateCreated.Value.ToShortDateString()</span>
            @*@Html.LabelFor(n => n.DateCreated)*@
        </div>
    </div> 

    <div class="control-group">
        <label class="control-label">@Html.LabelFor(n => n.Title)</label>
        <div class="controls">

            @Html.TextBoxFor(n => n.Title, new { @class = "span4 m-wrap", rows = 1 })


        </div>
    </div> 

    <div class="control-group">
        <label class="control-label">@Html.LabelFor(n => n.Body)</label>
        <div class="controls">
            @Html.TextAreaFor(n => n.Body, new { @class = "span12 ckeditor m-wrap", rows = 4 })

        </div>
    </div> 

    <div class="control-group">
        <label class="controls">@Html.DisplayTextFor(model => model.ImageName)</label>
        <div class="span4 blog-img blog-tag-data">
            <div class="editor-field">
                <input type="file" name="Article" id="ArticleImage" />
            </div>
        </div>
    </div>

    <div class="form-actions">

        <button type="submit" class="btn green" id="submitnews"><i class="icon-ok"></i>Submit</button>
        @Html.ActionLink("Cancel", "ArticleList", "Admin", null, new { @class = "btn blue" })
        @*<button type="button" class="btn blue" onclick="location.href='ArticleList','Admin'">Cancel</button>*@

    </div>                   
}

4

0 に答える 0