2

フォームを使用して写真を MVC にアップロードするテストを行いました (写真はパラメーターとして AJAX CALL に送信されます) コントローラーで、同じことを行う必要がありますが、変更が必要です。

機能する元のソースは次のとおりです。

<form action="/Home/Upload"  method="post" enctype="multipart/form-data">

<label for="photo">Photo:</label>
<input type="file" name="photo" id="photo" />

<input id="uploadbtn" type="submit" value="Upload" />
</form>

コントローラーからのアクションコード:

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase photo)
    {
        // Verify that the user selected a file
        if (photo != null && photo.ContentLength > 0)
        {
            // extract only the fielname
            var fileName = Path.GetFileName(photo.FileName);
            // store the file inside ~/App_Data/uploads folder
            var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName);
            photo.SaveAs(path);

        }
        return Json(new { Success = true });
    }

これは機能しますが、この場合は機能しません:

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{

  <div class="control-group">
    <label class="control-label" for="photo">Photo:</label>
    <div class="controls">
        <input type="file" name="photo" id="photo" />
    </div>
  </div>
}

アクションコードは次のとおりです。

public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo)
{
    if (photo != null && photo.ContentLength > 0)
    {
        // extract only the fielname
        var fileName = Name + ".png";
        // store the file inside ~/App_Data/uploads folder
        var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName);
        photo.SaveAs(path);
    }

    else
    {
        Status += "Error image";
        Success = false;
    }
}

EditModule をデバッグすると、写真の値が NULL になります。javascript と ajax 呼び出しに問題はないと確信しています。

4

3 に答える 3

7

コントローラーとアクション名を null に設定したため、フォームは投稿先を認識できません。最初の 2 つのパラメーターをアクション名とコントローラー名に変更します。

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, 
                                   new { enctype = "multipart/form-data" }))
于 2013-08-21T07:24:12.607 に答える
2

EditModule をデバッグすると、写真の値が NULL になります。javascript と ajax の呼び出しに問題はないと確信しています

ajax でバイナリをアップロードすることはできません。<IFRAME>または Flash プラグインを使用する必要があります。

詳細については、この回答を参照してください: https://stackoverflow.com/a/6462673/70386

于 2013-08-21T07:28:42.617 に答える
0

アクションとコントローラーに null を入れると、MVC は現在のアクションとコントローラーを使用します。

于 2014-11-14T00:51:08.807 に答える