0

特定のフィールドのデータを編集したい。私が得た問題は、たとえば、フィールド名が文字列であることです。

私の見解では、次のようなパラメーターがあります。

<div class="editable" id="cnso">@Model.cnso</div>

そのフィールドを取得し、jeditableを使用して Ajax 経由でコントローラーを呼び出します。

$('.editable').editable('/Req/UpdateField', {
    tooltip: 'Click to edit...',
    submitdata : {
        nreqid : function() {
            return $("#nreqid").val();
        }
    }
});

私のコントローラーは、文字列内のフィールド (cnso) の名前を取得しましたid。問題は、モデルを更新することです。私のコントローラのいくつかのコード。

public string UpdateField(string id, string value, int nreqid)
{
    /*
     *        id - id of the field. This value can be used on the
     *             server side to determine what property of the
     *             company should be updated.
     *     value - text that is entered in the input field.
     *    nreqid - this is additional parameter that will
     *             be added to the request. Value of this parameter
     *             is a value of the hidden field with an id "ReqId".
     */
    ModelState.Clear();

    if (ModelState.IsValid)
    {
        //db.Entry(req).State = EntityState.Modified;
        //db.SaveChanges();
        Req req = db.Req.Find(nreqid);
        req."id" = "2";  // <--- Problem here !!!
    }
}

モデル オブジェクト にReqはフィールドcnsoがあり、文字列には "cnso" があります。文字列 ID からidを選択するにはどうすればよいですか?cnso

4

1 に答える 1

2

リフレクションを使用すると、次のことができます。

Type t = typeof(Req);
PropertyInfo p = t.GetProperty(id);
if(p != null)
    p.SetValue(req, "2", null);

または、プロパティが多すぎない場合は、必要なすべてのプロパティに対して別の Update アクションを作成できます。これが必要な状況はわかりませんが、テーブル内の個々のプロパティを一度に 1 つずつ更新することは、最適な設計ではない可能性があります。

于 2012-04-12T20:56:52.957 に答える