Asp.net mvc MVC返回Json结果
我有一个上传文件的控制器。我想返回一个json结果,其中包含bool success(如果成功上传,否则为false)和message(这可能是发生的错误消息,也可能是指向文件的链接或指向图像的链接,具体取决于上传的内容) 最好的方法是什么 我有这个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
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
}