Может кто-нибудь, пожалуйста, скажите мне, как получить formData в методе контроллера в ASP.net MVC?
<script type="text/javascript">
$(function () {
$('#fileupload').fileupload({
contentType: 'application/json; charset=utf-8',
url: '/Home/GoodSave'
})
.on("fileuploadsubmit", function (e, data) {
data.formData = {
jsonOfLog: $("#ddlDocumentType option:selected").text()
};
});
$("#fileuploadbutton").on("click", function() {
$("#fileupload").submit();
});
});
</script>
Обычно вы указываете параметр в действии контроллера с тем же именем, что и поле в данных формы:
[HttpPost]
public ActionResult GoodSave(string jsonOfLog)
Или определите модель с соответствующим полем:
public class Form {
public string jsonOfLog {get; set;}
}
[HttpPost]
public ActionResult GoodSave(Form data)
Благодаря U10 и Jefraim Ngek, взяв подсказки из ваших ответов, я сделал это так:
Ввиду:
<script type="text/javascript">
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
url: '/Home/GoodSave', maxFileSize: 5000000,
add: function (e, data) {
$("#fileuploadbutton").click(function () {
data.formData = { jsonOfLog: $("#ddlDocumentType option:selected").text() };
data.submit();
});
},
});
});
</script>
В методе контроллера:
[HttpPost]
public JsonResult GoodSave(string jsonOfLog)
{
Я думаю, вы пытаетесь загрузить файл с помощью ajax. Используйте эту ссылку для загрузки файлов через ajax.
Однако ниже приведен пример получения данных формы.
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="OK" />
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
// Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(file.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
// redirect back to the index action to show the form once again
return RedirectToAction("Index");
}