Я работаю над профилем для пользователей на моем веб-сайте ASP.NET MVC. И у меня есть много свойств (флажки, выпадающих и т.д.), как:Сохранение свойств «на лету»
- Времени зона
- DST
- Настройка электронной почты
я могу создать свою собственную модель для обработки всех из них, как это :
public class ProfileViewModel
{
public TimeZoneOptions TimeZone { get; set; }
public DstOptions Dst { get; set; } // Daylight Saving Time
public bool EmailSettings1 { get; set; }
public bool EmailSettings2 { get; set; }
// ...
public bool EmailSettings22 { get; set; }
}
Мои свойства модели не связаны друг с другом. Поэтому мне не нужно звонить ModelState.IsValid
. Кажется, моя модель всегда будет действительной.
Если я следовать стандартному способу сохранения модели в ASP.NET MVC, это заставит мой клиент нажать дважды:
- Изменить свойство
- Нажмите кнопку Сохранить
Но я хочу, чтобы они сделали это одним щелчком мыши. Как на этом скриншоте:
Я хочу, чтобы каждое свойство быть помечены «Изменения сохранены», когда пользователь нажимает на них. И Я хочу достичь этого с минимальным количеством кода. Похоже, что это легко сделать с помощью:
- JQuery только
или
- Knockout.js
Но я не могу решить, что лучше. В jQuery я могу напрямую манипулировать с DOM. Но, похоже, с нокаутом он может быть более элегантным, и я могу сделать мой код более удобным.
Я не знаю, как сделать это с помощью нокаута, может быть какая-то привязка необходима для обновления элемента, когда он сохраняется так:
<span data-bind="display-when-saved-for-property: EmailSettings1"></span>
???
Возможно, есть другие способы сделать это. Любая помощь будет высоко оценен.
Просто есть OnChange событие для ваших флажков, который имеет АЯКС вызов вашим контроллер. Ваш контроллер сохранит данные, а обратный вызов успеха ajax отобразит измененные сообщения. Вот как я это сделаю. Дайте мне знать, если вы хотите получить более подробную информацию – heymega
@heymega, спасибо. И как определить, какое свойство было изменено? Я должен представить всю модель контроллеру, не так ли? Таким образом, это уникальный URL-адрес ajax для сохранения модели для всех свойств. Как я могу отобразить «Сохраненные изменения» для определенного свойства? –
Дайте мне 10 минут, я пишу код для вас – heymega