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,我的id字符串有“cnso”,那么我怎样才能cnso从我的字符串id中选择呢?

4

1 回答 1

2

使用反射你可以这样做:

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

或者,如果没有太多属性,您可以为所需的所有属性执行不同的更新操作。我不知道你在什么情况下需要这个,但是每次更新一个表中的单个属性可能不是最好的设计。

于 2012-04-12T20:56:52.957 回答