Asp.net mvc MVC返回Json结果

Asp.net mvc MVC返回Json结果,asp.net-mvc,json,asp.net-mvc-3,file-upload,Asp.net Mvc,Json,Asp.net Mvc 3,File Upload,我有一个上传文件的控制器。我想返回一个json结果,其中包含bool success(如果成功上传,否则为false)和message(这可能是发生的错误消息,也可能是指向文件的链接或指向图像的链接,具体取决于上传的内容) 最好的方法是什么 我有这个 public class UploadedFile { public bool Success { get; set; } public string Message { get; set; } } 然后在我的控制器中,我将Su

我有一个上传文件的控制器。我想返回一个json结果,其中包含bool success(如果成功上传,否则为false)和message(这可能是发生的错误消息,也可能是指向文件的链接或指向图像的链接,具体取决于上传的内容)

最好的方法是什么

我有这个

public class UploadedFile
{
    public bool Success { get; set; }

    public string Message { get; set; }
}

然后在我的控制器中,我将Success设置为true/or/false,并将Message设置为
为什么要解析它?您不能在返回的Json中提供更多信息吗

也许是这样的:

public class UploadedFile
{
  public bool Success { get; set; }
  public string Message { get; set; }
  public Kind MessageKind { get; set; }
}

public enum Kind
{
  Error,
  File,
  Image
}

根据
MessageKind
,您只需使用适当的html来显示结果。

您的思路是正确的。我建议您使用,它将允许您对
进行调整,并处理成功案例

例如:

型号:

public class UploadedFile
{
    public bool Success { get; set; }
    public string Url { get; set; }
    public string Message { get; set; }
}
控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        if (file != null && file.ContentLength > 0)
        {
            var images = Server.MapPath("~/images");
            var filename = Path.Combine(images, Path.GetFileName(file.FileName));
            file.SaveAs(filename);
            return View("UploadedFile", new UploadedFile
            {
                Success = true,
                Url = Url.Content("~/images/" + Path.GetFileName(file.FileName))
            });
        }
        return View("UploadedFile", new UploadedFile
        {
            Success = false,
            Message = "Please upload a file"
        });
    }
}
视图:


$(函数(){
$('form').ajaxForm(函数(结果){
$('#result').html(result);
});
});
@使用(Html.BeginForm(“index”,“home”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
}
以及上载的部分文件:

@model AppName.Models.UploadedFile
@{
    Layout = null;
}

@if (Model.Success)
{
    <img src="@Model.Url" alt="" />
} else {
    @Model.Message
}
@model AppName.Models.UploadedFile
@{
布局=空;
}
@if(Model.Success)
{
}否则{
@模型消息
}
@model AppName.Models.UploadedFile
@{
    Layout = null;
}

@if (Model.Success)
{
    <img src="@Model.Url" alt="" />
} else {
    @Model.Message
}