1

ビューは次のようなものです (ドキュメントを動的に追加および削除します。ここに記述された Guid は ViewModel の DocumentIdentifier メンバーです):

<div>
    <input type="hidden" name="DocumentViewModels.Index" value="8796c4e8-2262-46c0-bacc-8ffb6678b62a" />
    <input type="text" name="DocumentViewModels[8796c4e8-2262-46c0-bacc-8ffb6678b62a].Document.Name" />
    <input type="text" name="DocumentViewModels[8796c4e8-2262-46c0-bacc-8ffb6678b62a].Document.Type" />
<div>

<div>
    <input type="hidden" name="DocumentViewModels.Index" value="3f2810c6-e338-4a6a-aa64-54b162303aab" />
    <input type="text" name="DocumentViewModels[3f2810c6-e338-4a6a-aa64-54b162303aab].Document.Name" />
    <input type="text" name="DocumentViewModels[3f2810c6-e338-4a6a-aa64-54b162303aab].Document.Type" />
<div>

私はこのようなビューモデルを持っています:

public class DocumentViewModel
{
    public Document Document {get;set;}
    public List<Attachments> {get;set;}
    public Guid DocumentIdentifier {get;set;}
}

コントローラ

public ActionResult PostDocuments(List<DocumentViewModel> documentViewModels)
{
    // I successfully save newly added documents in database
    // Then I delete documents from database that are not in documentViewModels any more (because I dynamically add and delete them)
    // Then I find documents that are on form and in database too and I want to update them
    List<Document> matchedDocumentsFromDatabase = SynchronizeDocuments(documentViewModels.Select(x => x.Document));
    // Here i'm stuck. I want to write something like this:
    UpdateModel(matchedDocumentsFromDatabase, "DocumentViewModels");
    context.SaveChanges();
    // return something;
}

手伝って頂けますか?

4

1 に答える 1

1

次のようにプレフィックスを使用できます。

public ActionResult PostDocuments(List<DocumentViewModel> documentViewModels)
{
    // I successfully save newly added documents in database
    // Then I delete documents from database that are not in documentViewModels any more (because I dynamically add and delete them)
    // Then I find documents that are on form and in database too and I want to update them
    var matchedDocumentsFromDatabase = SynchronizeDocuments(documentViewModels.Select(x => x.Document));
    // Here i'm stuck. I want to write something like this:
    string prefix = "";
    foreach(var item in matchedDocumentsFromDatabase)
    {
       prefix = string.Format("DocumentViewModels[{0}]",item.DocumentIdentifier .ToString());
       UpdateModel(item, prefix);
    }
    context.SaveChanges();
    // return something;
}

これが役立つことを願っています。

于 2012-11-30T10:24:24.080 に答える