我正在申请中显示报告。用户可以过滤报告。因此,他们输入过滤数据并单击“开始”按钮。在'Go'上单击我使用jQuery将整个表单传递给控制器操作。我想根据表单集合中的控件值读取数据库中的数据,并将数据传递回表单,并需要使用新数据重新加载报表。
我尝试了以下代码。
.cshtml
<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);
}
});
controller.cs
[HttpPost]
public JsonResult ReportFilter(string parameter)
{
return new DBConnect().GetFilterData(parameter);
}
我也试过下面的代码。但参数为空
[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);
答案 0 :(得分:2)
.serialize()
方法会将表单内容序列化为application/x-www-form-urlencoded
编码。所以这就像你从未使用过jQuery并直接将表单内容提交给服务器一样。
如果你根本不使用jQuery,那么你应该做同样的事情 - &gt;使用此表单将绑定到的视图模型:
[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; }
}
答案 1 :(得分:0)
试 HTML:
Inserir o Ficheiro: Descrição: 本地:在JS中:
function inserirficheiro(){
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);
}
});
}
在MVC中
[HttpPost]
public JsonResult NovoFicheiro(int id, string desc, string local, HttpPostedFileBase FileUpload)
{
// See de values....
return Json(new { ok = true, message = "", }, JsonRequestBehavior.AllowGet);
}