通过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";
我显然做不到!我唯一能想到的是每个字段有多个方法,所以EditName
、EditAddress
等等,这似乎是错误的。我希望这个方法能够处理模型的每个属性。
构造控制器的更好方法是什么,而不是为每个单独的字段编写多个方法?
- 你可以将你的整个表单(例如名字、姓氏等)张贴在任何字段的每个模糊上(这应该没问题,因为你会随着用户在表单上的进度保存所有更改)。除非真的试图节省字节,否则发布整个表单似乎很好
- 您可以发布字段名称,然后使用反射来查找对象的属性并设置值
我认为,如果您愿意以一种通用的方式对实体进行建模,就可以做到这一点:
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();
然而,通常最好以有意义的方式构建数据。在您描述的示例中,看起来可能有一个Person
和Address
实体。那么,为什么不创建一个具有属性Address
的Person
实体呢?