【问题标题】:jquery .ajax call to controller, model is null [closed]jquery .ajax 调用控制器,模型为空 [关闭]
【发布时间】:2013-04-16 05:42:13
【问题描述】:

我已经花了大约 10 个小时,阅读了无数帖子,试图弄清楚这一点,但不得不承认失败,所以希望有好心人能帮助我。

我正在尝试将数据发送到我的控制器 (GET) 以返回部分视图。尽管我尝试了各种变化,但控制器收到的模型始终为空。为了保持简单,我将模型缩减为一个元素。

我错过了什么? (提前致谢)

型号:

public class TextContentViewModel
{
    public string ContentType {get; set;}
}

控制器:

public ActionResult Preview(TextContentViewModel paneContent)
{
    return PartialView("_Text");
}

Javascript:

<script type="text/javascript">

    $("#previewButton").click(showPreview);

    function showPreview() {
         content = {
            ContentType: $("#ContentTypeID").val(),
        }
                $.ajax({
                url: '@Url.Action("Preview")',
                type: 'GET',
                contentType: 'application/json',
                data: JSON.stringify(content),
                success: function (result) {
                    $('#preview').html(result);
                },
                error: function (result) {
                    alert("something went wrong");
                }
            });
         };

【问题讨论】:

  • 尝试从ajax请求中删除contentType属性

标签: c# jquery ajax asp.net-mvc json


【解决方案1】:

您的传入和传出变量应该具有相同的名称。

尝试将您的 js 变量名称更改为

 paneContent = {
        ContentType: $("#ContentTypeID").val(),
    }

另外,不要尝试使用GET 发送复杂变量。那永远行不通。始终使用POST

            type: 'POST',

【讨论】:

  • 我曾尝试过 POST,但不知何故我错过了变量名必须相同。我只是认为属性名称需要相同。感谢您的帮助,我非常感谢。
  • @Joel 传递的变量名称必须匹配并不明显。这是因为 JSON 的编码/解码。欢迎来到 SO。希望你也有机会回答问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多