Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在智能向导中将模型发布到控制器?_Jquery_Ajax_Json_Asp.net Mvc 4_Model - Fatal编程技术网

Jquery 如何在智能向导中将模型发布到控制器?

Jquery 如何在智能向导中将模型发布到控制器?,jquery,ajax,json,asp.net-mvc-4,model,Jquery,Ajax,Json,Asp.net Mvc 4,Model,我只想在用户在smart wizard中从步骤2转到步骤3时回发一篇$.ajax文章。所以我制定了以下代码。我使用了var model=JSON。stringify@Model; 将模型转换为字符串并使用ajax请求传递 Ajax代码 但上述操作不会向控制器发回呼叫。我已经通过删除JSON进行了检查。stringify@Model并将其替换为文本。现在ajax请求到达控制器时没有任何问题 下面是我的代码 模型文件 到 现在请求到达控制器,但我收到的模型是空的。JSON。stringify@Mod

我只想在用户在smart wizard中从步骤2转到步骤3时回发一篇$.ajax文章。所以我制定了以下代码。我使用了var model=JSON。stringify@Model; 将模型转换为字符串并使用ajax请求传递

Ajax代码

但上述操作不会向控制器发回呼叫。我已经通过删除JSON进行了检查。stringify@Model并将其替换为文本。现在ajax请求到达控制器时没有任何问题

下面是我的代码

模型文件

现在请求到达控制器,但我收到的模型是空的。

JSON。stringify@Model; 不会做你认为会做的事。stringify需要一个Javascript对象@Model将有Razor输出Model.ToString;的内容;,它将不是Javascript对象

您需要将模型序列化为Javascript,这可以使用JavaScriptSerializer实现:

var model = @{new JavaScriptSerializer().Serialize(Model)};
                var s = 10;
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("GetSampleFeed")',
                    data: model
                });
您可以在System.Web.Extensions DLL中找到

此外,由于您正在反序列化模型,因此不需要将其转换为JSON或从JSON转换为JSON。MVC和jQuery将为您处理此问题,因此在控制器端,您可以执行以下操作:

[HttpPost]
public ActionResult GetSampleFeed(OndemandFeedModel model)
{
    return Content(string.Format("<row>{0}</row>", model.RowName));
}

嗨,Blade,谢谢你的回复。我已经按照您的建议进行了尝试,现在请求到达控制器,但我收到了一个空模型。@Umamaheswaran使用Chrome控制台/Firefox Firebug来检查发送到服务器的确切数据。您可能需要更改一些参数,以确保MVC将其识别为JSON。看看这个答案:
<script type="text/javascript">

    $(document).ready(function () {
        $('#wizard').smartWizard({
            onShowStep: showAStepCallback,
            onFinish: onFinishCallback
        });

        function showAStepCallback(obj, context) {

            if (context.fromStep == 2 && context.toStep == 3) {
                var model = JSON.stringify(@Model);
                var s = 10;
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("GetSampleFeed")',
                    data: "inStringModel=" + model
                });

            }

            // return false to stay on step and true to continue navigation 
        }
        // setting the active tab
        $('#wizard').smartWizard();
        $('.date').datepicker({ dateFormat: "dd/mm/yy" });
        function onFinishCallback() {
            $('#wizard').smartWizard('showMessage', 'Finish Clicked');
            //alert('Finish Clicked');
        }
            .....
    });
</script>
[HttpPost]
public ActionResult GetSampleFeed(string inStringModel)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    var inObjectModel = serializer.Deserialize(inStringModel, typeof(OndemandFeedModel));
    return Content("<row></row>");
}
var model = JSON.stringify(@Model);
var model = @{new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);}            
var model = @{new JavaScriptSerializer().Serialize(Model)};
                var s = 10;
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("GetSampleFeed")',
                    data: model
                });
[HttpPost]
public ActionResult GetSampleFeed(OndemandFeedModel model)
{
    return Content(string.Format("<row>{0}</row>", model.RowName));
}