我正在尝试上传文件,然后将其内容检索为JSon
我的控制器:
controller.cs
[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
List<string> list = doStuff(file);
return Json(list);
}
我的观点:
view.cshtml
@using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" id="file" name="file" />
<input type="submit" name="Upload" value="Upload" />
}
当我上传文件时,它建议我下载一个JSON文件,但我想要的是用这个JSON设置一个javascript变量,所以我可以直接在我的网页上使用它。
答案 0 :(得分:1)
我认为最好的解决方案是使用ajax表单。
请参阅以下示例:
控制器:
[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
return Json(new { ReturnMessage = "Success!!!!!" + file.FileName});
}
查看:
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { @id="formUploadFile", @onsubmit = "return SubmitFormWithFile();" }))
{
@Html.TextBox("file", null, new { @type = "file", @id = "file" })
<button type="submit">Send</button>
}
使用Javascript:
function SubmitFormWithFile() {
var form = $("#formUploadFile");
$.ajax({
url: form.attr("action"),
type: form.attr("method"),
data: new FormData(form[0]),
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
alert("Before Send");
},
success: function (dataResult) {
//set its variable here...
//the dataResult is returned json...
alert(dataResult.ReturnMessage);
},
error: function () {
alert("Error");
}
});
return false;
}