案例已关闭 - 将JSON数据传递给Controller MVC

时间:2014-03-14 03:15:13

标签: asp.net-mvc json asp.net-mvc-4

我想从我的视图传递此数据以通过控制器保存它。

我的观点     

<div>
    <b>Title</b> <br /> 
    <input type="text" id="title" /><br />
    <b>Description</b> <br /> 
    <input type="text" id="desc" /><br />   
</div>
<button id="saveDetails">Save</button>

我的js

$(document).ready(function () {
    $(document).on("click", "#saveDetails", saveDetails);
    $("#detailsPanel").hide();
});

var saveDetails = function () {
    var dataPost = {
        "Title": $("#title").val(),
        "Description": $("#desc").val(),
        "AssetId": $("#assetId").val()
    }
    $.ajax({
        type: "POST",
        async: false,
        contentType: "application/json",
        data: JSON.stringify(dataPost),
        url: "/Media/Save"
    }).done(function (state) {
        if (state.Saved == true) {
            displayStatusMessage("Saved Successfully");
            $("#detailsPanel").hide();
            mediaPlayer.initFunction("videoDisplayPane", state.StreamingUrl);
        } else {
            displayStatusMessage("Save Failed");            
        }
    });
}

我的控制器

 [HttpPost]
    public JsonResult Save(MediaElement mediaelement)
    {
        try
        {
            mediaelement.UserId = User.Identity.Name;
            mediaelement.FileUrl = GetStreamingUrl(mediaelement.AssetId);
            db.MediaElements.Add(mediaelement);
            db.SaveChanges();
            return Json(new { Saved = true, StreamingUrl = mediaelement.FileUrl });
        }
        catch (Exception ex)
        {
            return Json(new { Saved = false });
        }
    }

它已经将数据发布到我的控制器(我通过Fiddler看到它),但它总是返回Json(new {Saved = false})。

我的代码有什么问题?需要帮助,请...

[已结案]

好的,我在我的数据库中发现,我有一个不是null的coloum UploadDate。我已经用这个 - &gt;声明我的数据库上的默认值GETDATE()。但是当我从控制器插入数据时它不起作用。所以我通过Controller手动添加UploadDate的值。然后它的作品:)

谢谢大家:)

1 个答案:

答案 0 :(得分:0)

我认为问题在于MediaElement模型绑定... 但在此之前,请查看以下内容:

  1. 您可以尝试删除ajax的JSON类型。
  2. 你的json格式。
  3. dataPost var miss;端。
  4. $(document).ready(function () {
    $(document).on("click", "#saveDetails", saveDetails);
    $("#detailsPanel").hide();
    });
    
    var saveDetails = function () {
    var dataPost = {
        Title: $("#title").val(),
        Description: $("#desc").val(),
        AssetId: $("#assetId").val()
    };
    $.ajax({
        type: "POST",
        async: false,
    
        data: dataPost,
        url: "/Media/Save"
    }).done(function (state) {
        if (state.Saved == true) {
            displayStatusMessage("Saved Successfully");
            $("#detailsPanel").hide();
            mediaPlayer.initFunction("videoDisplayPane", state.StreamingUrl);
        }
        else {
            displayStatusMessage("Saved Failed");
        }
    });
    }