将参数传递给Action不会传递所有数据。 [英] Passing Parameters to Action is not passing all data.
问题描述
大家好,
我在控制器上执行以下操作:
[HttpPost]
public ActionResult SaveSubmission(SubmissionModel submission,SubmissionStateEnum submissionState)
{
if (Request.IsAjaxRequest())
{
return Json( true ,JsonRequestBehavior.AllowGet);
}
return RedirectToAction( 索引跨度>);
}
提交模式如下:
[Serializable]
public class SubmissionModel
{
public string TestString { get < /跨度>; set ; }
public SubmissionDetailsModel Details { get ; set ; }
public SubmissionIncomeStatement IncomeStatement { get ; set ; }
public SubmissionSubcontractorModel SubcontractorDetails { get ; set ; }
public SubmissionModel()
{
TestString = 新;
Details = new SubmissionDetailsModel();
IncomeStatement = new SubmissionIncomeStatement();
SubcontractorDetails = new SubmissionSubcontractorModel();
}
}
在我的页面上,我有这个功能来提交数据:
功能 SaveSubmission(){
var sd = {MarketId: 2 ,SubmissionDate:$('' #submissionDate')。attr(' data-日期')};
var so = {
TestString:' fromPage',
详细信息:sd,
IncomeStatement: null ,
SubcontractorDetails: null
};
$ .ajax({
type: POST ,
url:' @ Url.Action(SaveSubmission)',
data:{submission: JSON .stringify(so),submissionState:' @ SubmissionStateEnum.Rejected'},
dataType: json,
成功:功能(数据){
alert(data);
},
错误:< span class =code-keyword> function (jqXHR,textStatus,errorThrown){
alert(jqXHR);
alert(textStatus);
alert(errorThrown);
}
});
}
我遇到的问题是当从ajax调用动作时提交 参数为null,但是如果我查看请求,我可以看到它已经传回了数据。
所以我的问题是为什么它没有映射到我的对象上的动作?我尝试过序列化,我似乎无法让它工作?我可能会遗漏一些非常明显的东西,但我不知道它是什么。
如果您需要更多信息,请询问。
提前谢谢。
(' #submissionDate')。attr(' data-date')} ;
var so = {
TestString:' fromPage',
详细信息:sd,
IncomeStatement: null ,
SubcontractorDetails: null
};
.ajax({
type: POST,
url:' @ Url.Action(SaveSubmission)',
data:{submission: JSON .stringify(so), submissionState:' @ SubmissionStateEnum.Rejected'},
dataType: json,
成功:功能(数据){
alert(data);
},
错误: function (jqXHR,textStatus,errorThrown){
alert(jqXHR);
alert(textStatus);
alert(errorThrown);
}
});
}
我遇到的问题是当从ajax调用动作时提交 参数为null,但是如果我查看请求,我可以看到它已经传回了数据。
所以我的问题是为什么它没有映射到我的对象上的动作?我尝试过序列化,我似乎无法让它工作?我可能会遗漏一些非常明显的东西,但我不知道它是什么。
如果您需要更多信息,请询问。
提前致谢。
使用此代码
功能SaveSubmission(){
var sd = {MarketId: 2 ,SubmissionDate:
Hi Guys,
I have the following action on a controller:
[HttpPost]
public ActionResult SaveSubmission(SubmissionModel submission, SubmissionStateEnum submissionState)
{
if (Request.IsAjaxRequest())
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return RedirectToAction("Index");
}
The submission model looks as follows:
[Serializable]
public class SubmissionModel
{
public string TestString { get; set; }
public SubmissionDetailsModel Details { get; set; }
public SubmissionIncomeStatement IncomeStatement { get; set; }
public SubmissionSubcontractorModel SubcontractorDetails { get; set; }
public SubmissionModel()
{
TestString = "NEW";
Details = new SubmissionDetailsModel();
IncomeStatement = new SubmissionIncomeStatement();
SubcontractorDetails = new SubmissionSubcontractorModel();
}
}
On my page, I have this function to submit the data:
function SaveSubmission() {
var sd = { MarketId: 2, SubmissionDate: $('#submissionDate').attr('data-date') };
var so = {
TestString: 'fromPage',
Details: sd,
IncomeStatement: null,
SubcontractorDetails: null
};
$.ajax({
type: "POST",
url: '@Url.Action("SaveSubmission")',
data: { submission: JSON.stringify(so), submissionState: '@SubmissionStateEnum.Rejected' },
dataType: "json",
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR);
alert(textStatus);
alert(errorThrown);
}
});
}
The problem I am having is that when the action gets called from the ajax the "submission" parameter is null, however if I look at the request I can see it has passed the data back.
So my question is why is it not mapping to my object on the action? I've tried serialisation and I cannot seem to get it to work? I might be missing something very obvious but I have no idea what it is.
If you need more info, please ask.
Thanks in advance.
('#submissionDate').attr('data-date') }; var so = { TestString: 'fromPage', Details: sd, IncomeStatement: null, SubcontractorDetails: null };
.ajax({ type: "POST", url: '@Url.Action("SaveSubmission")', data: { submission: JSON.stringify(so), submissionState: '@SubmissionStateEnum.Rejected' }, dataType: "json", success: function (data) { alert(data); }, error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR); alert(textStatus); alert(errorThrown); } }); }
The problem I am having is that when the action gets called from the ajax the "submission" parameter is null, however if I look at the request I can see it has passed the data back.
So my question is why is it not mapping to my object on the action? I've tried serialisation and I cannot seem to get it to work? I might be missing something very obvious but I have no idea what it is.
If you need more info, please ask.
Thanks in advance.
use this code
function SaveSubmission() { var sd = { MarketId: 2, SubmissionDate:
这篇关于将参数传递给Action不会传递所有数据。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!