私は見えクラスを持っているように:私はプロパティを更新するメソッドを呼び出してのActionResult Updateで私のコントローラで次にASP.NET MVC C#のobservリストとホールド削除され、追加された項目
private ObservableCollection<string> _areaCollection;
private List<string> _removedAreas;
private List<string> _addedAreas;
public Constructor()
{
_areaCollection = new ObservableCollection<string>();
_areaCollection.CollectionChanged += AreaCollectionChanged;
_removedAreas = new List<string>();
_addedAreas = new List<string>();
}
public IEnumerable<string> Areas { get { return _areaCollection; } }
public IEnumerable<string> AddedAreas
{
get { return _addedAreas; }
}
public IEnumerable<string> RemovedAreas
{
get { return _removedAreas; }
}
public void DisableArea(string areaAlias)
{
if (_areaCollection.Contains(areaAlias))
_areaCollection.Remove(areaAlias);
}
public void EnableArea(string areaAlias)
{
if (!_areaCollection.Contains(areaAlias))
_areaCollection.Add(areaAlias);
}
private void SectionCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
var item = e.NewItems.Cast<string>().First();
if (_addedAreas.Contains(item) == false)
{
_addedAreas.Add(item);
}
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
var item = e.OldItems.Cast<string>().First();
if (_removedAreas.Contains(item) == false)
{
_removedAreas.Add(item);
}
}
}
:
private bool UpdateProperties(IUser current, IUser update, out IUser result)
{
result = current;
// Update areas
...
return true;
}
だからここに私は次のような結果が欲しい:結果の
_areaCollection
は、更新されたリストが含まれています_removedAreas
は更新_addedAreas
に基づいて削除された領域が更新
に基づいて追加された領域が含まれています。しかし、私はこの上で立ち往生していますが含まれています。
すべてが非公開の場合、ObservableCollectionの目的は何ですか? Disable/Enableメソッドの中にあなたのロジックをカプセル化するだけでいいのですか?また、あなたが達成しようとしていることを理解することは本当に難しいですが、問題は明らかではありません。何が効いていないのですか? –
削除された領域と追加された領域のプロパティを2つ公開しました。私はデータベースを簡単に更新できるように、削除された領域と追加された領域を保持したい。最初に、RemovedAreasプロパティを調べて領域を削除し、AddedAreasプロパティを調べて挿入を行います。 – Mivaweb
私の質問はまだ残っています。なぜなら、ObservableCollectionの代わりに 'List'を使い、' EnableArea'/'の内部に' _addedAreas.Add(item); 'と' _removedAreas.Add(item) 'DisableArea'メソッド?これにより、クラスが簡素化されます。 –