0

私の英語でごめんなさい。サーバーへのファイル転送 (画像) に関する問題を取り上げます。ページ上の 1 つのフォームから 1 つのファイルに転送された場合は問題ありませんが、(ajax を使用して) 複数のフォームを実行しようとすると、データがまったく送信されません。画像 (特にデータベース) の形式で合計 7 種類あり、それぞれが典型的なモデルです。

public class Image
{
    public int Id { get; set; }
    public int ProductId { get; set; }
    public int Number { get; set; }
    public HttpPostedFileBase Data { get; set; }
    public byte[] Img { get; set; }
    public string MIMEType { get; set; }
}

Img - データベースからデータを取得するプロパティ、Data - ページから設定

「共通」ビュー:

@for (int i = 1; i < 8; i++)
{
    <div id="image-@i">
        @Html.Partial("EditImage", new Image() { Id = Model.Imgs[i-1], Number = i, ProductId = Model.Id })
    </div>
    <div class="clear"></div>
}

そして主な問題は、「EditImage」を表示することです:

@model Image

@using (Ajax.BeginForm("EditImage", "Product", null, new AjaxOptions() 
             { 
                 Url = "/Product/EditImage", 
                 HttpMethod = "Post", 
                 InsertionMode = InsertionMode.Replace, 
                 UpdateTargetId = "image-" + Model.Number.ToString() 
             }, new { enctype = "multipart/form-data" }))
{
    @Html.HiddenFor(model => model.MIMEType)
    @Html.HiddenFor(model => model.ProductId)
    @Html.HiddenFor(model => model.Id)
    @Html.HiddenFor(model => model.Number)

    <div class="mini-image left">
        <img src="@Url.Action("Image", "Home", new { Id = Model.Id })" />
    </div>

    <input type="file" name="Data" />

    <input id="ok-@Model.Number" type="submit" value="Send"/>
    <input id="del-@Model.Number" type="reset" value="Cancel"/>
}

アクションの最初の行にブレークポイントを設定しました。プロパティ「ProductId」と「Number」が渡されました。Data is null :( set id="Data", id="Data@(Model.Number)" を試しましたが失敗しました。

更新: 思ったより難しいです。Request.Files.Count は 0 です

4

1 に答える 1