将参数传递给Action不会传递所有数据。 [英] Passing Parameters to Action is not passing all data.

查看:92
本文介绍了将参数传递给Action不会传递所有数据。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我在控制器上执行以下操作:

 [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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆