C# MVC和jQueryAjax方法中未获取表单数据
我在申请表中显示一份报告。用户具有筛选报告的功能。因此,他们输入过滤数据并点击“Go”按钮。在“Go”上单击我使用jQuery将整个表单传递给控制器操作。我希望根据表单集合中控件的值从数据库中读取数据,并将数据传递回表单,然后需要使用新数据重新加载报表 我尝试了以下代码 .cshtmlC# MVC和jQueryAjax方法中未获取表单数据,c#,jquery,ajax,asp.net-mvc,form-submit,C#,Jquery,Ajax,Asp.net Mvc,Form Submit,我在申请表中显示一份报告。用户具有筛选报告的功能。因此,他们输入过滤数据并点击“Go”按钮。在“Go”上单击我使用jQuery将整个表单传递给控制器操作。我希望根据表单集合中控件的值从数据库中读取数据,并将数据传递回表单,然后需要使用新数据重新加载报表 我尝试了以下代码 .cshtml <script type="text/javascript"> $(document).ready(function () { $('#action_button').click(funct
<script type="text/javascript">
$(document).ready(function () {
$('#action_button').click(function () {
//$('#trialReportForm').attr("action", '@Url.Action("ReportFilter", "MyController")');
//$('#trialReportForm').submit();
// While using above two commented lines instead of the below codes, I get the form collection correctly. BUt I cannot pass back the new data to the form. If this is the solution.. How can I pass the data back to form to reload the report?
var formElements = $("#trialReportForm").serialize();
//var data = { "parameter": $.toJSON(formElements) };
var data = { "parameter": formElements };
$.ajax({
url: @Url.Action(ReportFilter", "MyController"),
type: 'POST',
data: data,
dataType: 'json',
success: OnSuccess,
error: OnFailure
});
});
function OnSuccess(result)
{
alert(result);
}
function OnFailure(result)
{
alert(result);
}
});
我也尝试了下面的代码。但是参数是空的
[HttpPost]
public JsonResult ReportFilter(FormCollection parameter)
{
return new DBConnect().GetFilterData(parameter);
}
我正在接受行动呼叫方法。但这里的参数是以某种序列化形式出现的。但无法反序列化它。如何反序列化它以形成其他形式的集合。?
我所要做的就是获取表单中输入控件的值
我尝试了以下两种反序列化代码。但没有一个工作正常。只有例外
1: var serializer = new JavaScriptSerializer();
var jsonObject = serializer.Deserialize<FormCollection>(parameter);
2: var request = JsonConvert.DeserializeObject<FormCollection>(parameter);
1:var serializer=newJavaScriptSerializer();
var jsonObject=serializer.Deserialize(参数);
2:var request=JsonConvert.DeserializeObject(参数);
方法将表单内容序列化为应用程序/x-www-form-urlencoded
编码。因此,这与从未使用jQuery并直接向服务器提交表单内容完全相同
因此,如果您根本没有使用jQuery->使用此表单将绑定到的视图模型,则应该执行完全相同的操作:
[HttpPost]
public JsonResult ReportFilter(MyViewModel model)
{
...
}
并假设$(“#trialReportForm”).serialize()返回以下内容:
foo=bar&baz=bazinga
以下是模型的外观:
public class MyViewModel
{
public string Foo { get; set; }
public string Baz { get; set; }
}
试一试
HTML:
菲切罗插图:
描述:
本地:
在JS中:
函数inserirficheiro(){
在MVC中
[HttpPost]
public JsonResult NovoFicheiro(int id, string desc, string local, HttpPostedFileBase FileUpload)
{
// See de values....
return Json(new { ok = true, message = "", }, JsonRequestBehavior.AllowGet);
}
var desc = $("#inserirficheirodescricao").val();
var local = $("#inserirficheirolocal").val();
var formData = new FormData();
var file = document.getElementById("files").files[0];
formData.append("FileUpload", file);
formData.append("desc", desc);
formData.append("local", local);
formData.append("id","1");
$.ajax({
type: "POST",
url: "@Url.Content("~/gestaoficheiros/NovoFicheiro/")", //+ "?desc=" + desc + "&local=" + local,
data: formData,
cache: false,
dataType: 'json',
contentType: false,
processData: false,
success: function (data) {
if (data.ok == true) {
}
else {
return;
}
},
error: function (error) {
if (error.ok == undefined) {
alert("Sessão Expirou");
location.href = '@Url.Content("~")';
return;
}
alert("!Erro, resposta do Servidor: " + error.responseText);
}
});
}
[HttpPost]
public JsonResult NovoFicheiro(int id, string desc, string local, HttpPostedFileBase FileUpload)
{
// See de values....
return Json(new { ok = true, message = "", }, JsonRequestBehavior.AllowGet);
}