Редактирование полей формы через ajax и .net mvc - PullRequest
1 голос
/ 28 февраля 2012

У меня есть несколько входов на моей странице. Я хотел бы сохранить изменения в модели на входе размытия, чтобы при изменении значения каждого входа он сохранялся обратно на сервер, например контакты Google.

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

Я создаю событие размытия, используя jquery для отправки значения обратно на сервер. Он публикует структуру с именем входа, значением и идентификатором объекта.

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

В моем контроллере у меня есть:

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

Затем я получаю объект, используя EntityFramework с идентификатором. Затем я захотел обновить свойство модели для поля.

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

Что я, очевидно, не могу сделать! Единственный способ, которым я могу обдумать, - это несколько методов для каждого поля, поэтому EditName, EditAddress и т. Д., Что кажется неправильным. Я хочу, чтобы этот метод мог обрабатывать каждое свойство модели.

Какой лучший способ структурировать контроллер вместо написания нескольких методов для каждого отдельного поля?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012
  1. Вы можете разместить всю свою форму (например, имя, фамилию и т. Д.) На каждом размытии для любого из ваших полей (это должно быть хорошо, поскольку вы сохраняете все изменения по мере продвижения пользователя в форметем не мение).Если вы на самом деле не пытаетесь сохранить байты, публикация всей формы выглядит нормально.
  2. Вы можете просто опубликовать имя поля и затем использовать отражение, чтобы найти свойство вашего объекта и установитьзначение.
0 голосов
/ 28 февраля 2012

Я думаю, что вы можете сделать это, если вы хотите смоделировать сущность в общем виде:

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. Так почему бы не иметь Person сущность со свойством Address?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...