0

我有一个编辑页面,我想在按下按钮时向服务器提交一些更改,然后将页面中名为#main 的给定部分的 div 更改为另一个页面,以便使用新信息对其进行更新。

为此,我认为我不能使用提交按钮(如果我错了,请纠正我?)所以我使用 jquery 函数来处理页面选定部分的点击和更改。

当前发送到服务器的对象是空的,而不是修改后的内容。

这是有问题的观点:

@model Project.Models.ExampleModel

@using (Html.BeginForm())
{
    <fieldset>
        <legend>Edit Example: @Model.name</legend>
        <br/>
        @Html.LabelFor(c => c.name)
        @Html.TextBoxFor(c => c.name)
        <br/>
        @Html.LabelFor(c => c.dropdown)
        @Html.DropDownListFor(c => c.dropdown, Model.dropdowns)
        <br />
        <br />
        <input type="button" data-edit-id="@Model.id" value="Submit Changes" />
    </fieldset>
}

<script type="text/javascript">
    $(document).ready(function () {
        $('input[data-edit-id]').on('click', function () {
            var id = $(this).attr('data-edit-id');
            console.log(id);
            $.post('Home/EditPage', '@Model');
            $("#main").load("/Home/NewDivPage?id=" + id);
        });
    });
</script>

任何帮助是极大的赞赏

4

1 回答 1

1

这是错误的

$.post('Home/EditPage', '@Model');

@Model在服务器端进行评估,您会在客户端使用该表达式获得简单的字符串。您应该动态序列化form并将其内容发送到服务器

$.post('Home/EditPage', $('form').serialize());

另外,最后一条语句应该作为回调传递给 $.post,所以它会在 post 加载完成后执行

$.post('Home/EditPage', $('form').serialize(), function(){
   $("#main").load("/Home/NewDivPage?id=" + id); 
});
于 2013-07-10T13:49:19.093 回答