3

jEditable ( http://www.appelsiini.net/projects/jeditable ) を使用すると、インプレース編集を行い、変更された情報を URL に POST できることを理解しています。

私の ASP.NET MVC ビューには、インプレース編集可能にしたい一連のモデル情報が表示されています。現在、私は 2 つのビューを持っています - 1 つのテキスト表現と 1 つの編集ビューではフォームが完全に POST され、コントローラー アクションはオブジェクト全体 (フォーム要素名から組み立てられたもの) をパラメーターとして受け取り、オブジェクトを更新してテキストに戻ります-ビューのみ。

ただし、jEditable に切り替えると、テキスト ビューのみを使用して、オブジェクト全体ではなく、一度に 1 つのアイテムを POST します。jEditable が POST しているものを取り、それをオブジェクトの適切なプロパティに入れる単一のコントローラ アクションを構築するにはどうすればよいでしょうか?

4

2 に答える 2

1

これが私が反射を通してやっていることです:

意見:

$(".edit").editable('<%=Url.Action("UpdateEventData","Event") %>', {
                submitdata: {eventid: <%=Model.EventId %>},
                tooltip: "Click to edit....",
                indicator: "Saving...",
                submit : "Save",
                cancel : "Cancel"
            });

コントローラ:

public string UpdateEventData(int eventid, string id, string value)
    {
        //load the event
        var evt = Repository.GetEvent(eventid);

        //UpdateModel;
        System.Reflection.PropertyInfo pi = evt.GetType().GetProperty(id);
        if (pi==null)
            return "";
        try
        {

            object newvalue = Concrete.HelperMethods.ChangeType(value, pi.PropertyType);

            pi.SetValue(evt, newvalue, null);
            Repository.Save();

        }
        catch (Exception ex)
        {
            //handle errors here
        }

        return pi.GetValue(evt, null).ToString();

    }

メソッド "HelperMethods.ChangeType" は、http://aspalliance.com/author.aspx?uId=1026から取得した Convert.ChangeType のより堅牢なバージョンです (nullable を処理できるため) 。

于 2010-03-08T21:43:33.433 に答える