我有一个由Kendo组合框和Kendo文件上传组成的表单:
@using (Html.BeginForm("Methode", "controller", FormMethod.Post))
{
<p> Select country </p>
@(Html.Kendo().DropDownList().Name("country")
.DataTextField("Text").DataValueField("Value")
.DataSource(source => { source.Read(read => {
read.Action("GetMonth", "BudgetStage");
});
}))
<p> Select a .CSV file: </p>
@(Html.Kendo().Upload()
.Name("files")
.HtmlAttributes(new { accept = ".csv" })
)
<input type="submit" value="Submit" class="k-button k-primary" />
<input type="button" value="Ajax" class="k-button k-primary" onclick="postData(this)
}
这是我的C#控制器代码:
public JsonResult methode(IEnumerable<HttpPostedFileBase> files, string country)
{
return Json("It's OK !", JsonRequestBehavior.AllowGet);
}
当我单击提交按钮,控制器接收文件和字符串值但我需要从我的页面显示Json返回值时,这是有效的。
为此,我使用这个ajax函数:
function postData(button) {
var form = $(button).parents('form');
if (form.kendoValidator().data("kendoValidator").validate()) {
$.ajax({
type: "POST",
url: form.attr('action'),
data: form.serialize(),
error: function (xhr, status, error) {
alert(error);
},
success: function (response) {
alert(response);
}
});
return false;
}
return false;
}
当我点击Ajax按钮时,后端方法被调用,返回Json值,我的JS代码显示它。 问题是我收到字符串值但没有收到选定的CSV文件(null)。
如何发送文件和字符串并显示返回的Json值?
提前谢谢。
答案 0 :(得分:0)
问题是form.serialize()
在这种情况下并不真正起作用。使用kendo它不应该与ASP.NET MVC + JavaScript不同,所以基本上this可以帮助你。