1

これが私のビューとコントローラーのコードです

@using (Html.BeginForm("PdfHeaderAndFooterManager", "Dashboard", FormMethod.Post, new { enctype = "multipart/form-data", id = "formPdfImages" }))
 div id="resultMessage"></div>

コントローラのアクション

public ActionResult PdfHeaderAndFooterManager(HttpPostedFileBase headerImage,   HttpPostedFileBase footerImage)
{

   //some code to declare variables


    if (headerImage != null)
    {
        if (!String.IsNullOrEmpty(headerImage.ContentType))
        {
            headerImageContentType = imageHelper.IsValidImageType(headerImage.ContentType);

            if (headerImageContentType)
            {
                resizedHeaderImage = imageHelper.ResizeImage(headerImage.InputStream);
            }
            else
            {
                return Json(new { success = false, message = "Please Upload an image* file less than 2GB." });
            }
        }
    }
    if (footerImage != null)
    {
        if (!String.IsNullOrEmpty(footerImage.ContentType))
        {
            footerImageContentType = imageHelper.IsValidImageType(footerImage.ContentType);
            if (footerImageContentType)
            {   
                resizedFooterImage = imageHelper.ResizeImage(footerImage.InputStream);
            }
            else
            {

                return Json(new { success = false, message = "Please Upload an image* file less than 2GB." });
            }
        }
    }
    if (P24DataPrincipal.CurrentIdentity != null)
    {
        if (resizedHeaderImage != null || resizedFooterImage != null)
        {
          //add to DB code
            return Json(new { success = true, message = "Image(s) Uploaded Successfully." });

        }
        else
        {
            return Json(new {success = false, message = "Upload atleast 1 image file." });

        }

    }

    return View("someview");

}

上記のアクションで返されたJsonの結果を私のビューに表示するだけのjquery関数を作成する方法について、誰かが私を助けてくれませんか。ありがとう

4

2 に答える 2

2

編集上の注意

JSON または画像を送り返したいようです。おそらく、HTML 5 Blob API を使用していくつかの興味深いことを行うことができます (または、DATA URI を使用して JSON ペイロードとして画像を送り返します)。一般に、特に AJAX を介して、これに対する簡単な解決策はありません。

エンドノート

jQuery 1.5 以上を前提としています。

jQuery.post('/TheController/PdfHeaderAndFooterManager')
   .success(function(d){
        jQuery('#resultMessage').html(d.message).attr('data-action-success',d.success);
   }).error(function(){
      jQuery('#resultMessage').html('There was an error sending data to the server.').attr('data-action-success', false);
   });

そして、次のような CSS で何か楽しいことを行うことができます。

[data-action-success=true]{
 color: green;
}
[data-action-success=false]{
 color: red;
}

さまざまな種類の結果を返していることに驚かされます。これはかなり珍しいことなので、「フォームの表示アクション (GET アクション)」と「フォームの保存 (POST アクション)」を分けることをお勧めします。GET は HTML アクションの結果を返すことができます。POST は常に JSON を返すことができます。

于 2012-05-27T20:55:13.697 に答える