通过ajax调用传递整个模型

时间:2017-06-07 10:34:23

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

是否可以通过我的jQuery的ajax调用传递整个模型? 要知道,如果我当时设置了一个变量,我只能使它工作。

代码显示我通过ajax调用传递 iVideo_ID 。 Video对象有很多其他字段。因此,我可以传递整个现有对象(视频模型)而不是编写所有属性吗?

$.ajax({
    type: "POST", //HTTP POST Method
    url: "/Video/UpdateComment", // Controller/View
    data: { //Passing data
        iVideo_ID: '@(Model.Video.iVideo_ID)'
    }
});

我已尝试过这个,但它只返回一个null的模型:

$.ajax({
    type: "POST", //HTTP POST Method
    url: "/Video/NyMetode", // Controller/View
    data: '@(Model)'
});

那我怎么能通过整个模型呢?有可能吗?

编辑: 我的视图模型我尝试通过:

public class CommentViewModel
{
   public List<Comments> Comments { get; set; }
   public List<Tasks> Tasks { get; set; }
   public Videos Video { get; set; }
   public List<VideoTaskScores> VideoTaskScores { get; set; }
}

4 个答案:

答案 0 :(得分:0)

实际上你可以做到这一点

稍微改变一下以获得更多简化I.e

<div class="container">
    <h2>Student Information</h2>
    @using (Html.BeginForm("insert", "Menu", FormMethod.Post, new { id="target"}))
    {
        <label>First Name:</label>
        <input data-val="true" data-val-required="First Name field is required." type="text" class="form-control" name="firstname" id="firstname" />

        <span class="field-validation-valid" data-valmsg-for="firstname" data-valmsg-replace="true"></span>
        <button type="submit" class="btn btn-success" >Insert</button>
    }
</div>

然后在ajax数据

<script>
var jsonData= @html.raw(json.encode(Model));

只需确保在您的actionresult中param名称也是modelName即

data: modelName : jsonData,

答案 1 :(得分:0)

在cshmtl页面中尝试这样的事情:

 <script type="text/javascript">
        function GetModel() {      
            return @Html.Raw(Json.Encode(Model));
        }
</script>

这就是你如何发送整个模型:

var ModelData = GetModel();
 $.ajax(
        {
                        type: "POST", //HTTP POST Method
                        url: "/Video/UpdateComment", // Controller/View
                        data: { ModelName: GetModel(); }
        });

答案 2 :(得分:0)

您可以在表单中嵌入模型属性,然后序列化表单并将其传递给您的ajax调用。

$.ajax({
                url: "/Controller/ActionName",
                type: 'POST',
                data: $('#MyFormName').serialize()
            })
                .done(function (response) {
        alert(response.Message);                        

                    }
                }).fail(function () {
                    alert(Something went wrong);  
                });

在操作中,您可以直接访问模型

public ActionResult ActionName(MyModel modelObj)
    {} 

答案 3 :(得分:0)

您可以使用Json.stringify(model)但在实现之前,您应该使用jQuery获取模型类的列表以及它们的最后状态。

你能试试吗

// you can get your model data from view by jQuery
// your model has list objects so you should get these from view and add these into model
var model = {...}; // your object corresponds model object

$.ajax({
    type: "POST", //HTTP POST Method
    url: "/Video/UpdateComment", // Controller/Action
    data: Json.stringify(model),
    contentType: "application/json"
}).done(function (res) {
    // after done insert your code here
});;