通过ajax和.net mvc编辑表单字段

本文关键字:编辑 表单 字段 mvc net ajax 通过 | 更新日期: 2023-09-27 18:26:08

我的页面上有很多输入。我想将对模型的更改保存在输入模糊上,这样当我更改每个输入的值时,它就会被保存回服务器,就像谷歌联系人一样。

<input id="FirstName" name="FirstName">Jack</input>

我使用jquery创建了一个模糊事件,将值发布回服务器。它发布一个结构,其中包含输入的名称、值和实体的id。

$.post(url, { id: "2", key: "FirstName", value: "Jack" }, successFuction);

在我的控制器中,我有:

public ActionResult EditField(int id, string key, string value)

然后,我使用带有id的EntityFramework检索实体。然后,我想更新字段的模型上的属性。

var entity = _db.Get(id);
entity[key] = value;
return Content "Success";

我显然做不到!我唯一能想到的是每个字段有多个方法,所以EditNameEditAddress等等,这似乎是错误的。我希望这个方法能够处理模型的每个属性。

构造控制器的更好方法是什么,而不是为每个单独的字段编写多个方法?

通过ajax和.net mvc编辑表单字段

  1. 你可以将你的整个表单(例如名字、姓氏等)张贴在任何字段的每个模糊上(这应该没问题,因为你会随着用户在表单上的进度保存所有更改)。除非真的试图节省字节,否则发布整个表单似乎很好
  2. 您可以发布字段名称,然后使用反射来查找对象的属性并设置值

我认为,如果您愿意以一种通用的方式对实体进行建模,就可以做到这一点:

public class FieldEntity {
    public int Id { get; set; }
    public string Key { get; set; }
    public string Value { get; set; }
}

然后在上下文中使用它,如:

var fieldEntity = db.Find(id);
fieldEntity.Key = key;
fieldEntity.Value = value;
db.SaveChanges();

然而,通常最好以有意义的方式构建数据。在您描述的示例中,看起来可能有一个PersonAddress实体。那么,为什么不创建一个具有属性AddressPerson实体呢?