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 に答える