0
私は更新しようとすると、私は、コントローラのポストアクションObjectStateManagerエラー
public ActionResult Demographics(string submitButton, DemographicsViewModel model)
{
switch (submitButton)
{
case "Home":
return RedirectToAction("Index");
case "Next Page":
using (ProposalRepository proposalRepository = new ProposalRepository())
{
model.Proposal.UserID = proposalRepository.GetUserByName(MasterHelper.CurrentUsername).UserID;
model.Proposal.CustomerID = proposalRepository.GetCustomerByName(model.CustomerName).CustomerID;
if (model.Proposal.ProposalID != 0)
{
proposalRepository.Update(model.Proposal);
}
else
{
proposalRepository.AddProposal(model.Proposal);
}
proposalRepository.SaveChanges();
}
return RedirectToAction("GRQuestions", model.Proposal);
default:
return View();
}
}
を持って
public void Update(Proposal proposal)
{
mContext.Proposals.ApplyCurrentValues(proposal);
}
スローエラー:されたオブジェクトのキーと一致するキーを持つオブジェクトが見つかりませんでしたObjectStateManagerに格納されます。指定されたオブジェクトのキー値が、変更を適用する必要があるオブジェクトのキー値と一致することを確認します。 私は解決策を探していたし、私はこれを見つけた:それはうまく動作しますが、私は、これは愚かな決断だと思うと、私はそこにあると信じて
Proposal proposal = proposalRepository.GetById(model.Proposal.ProposalID);
:
public ActionResult Demographics(string submitButton, DemographicsViewModel model)
{
switch (submitButton)
{
case "Home":
return RedirectToAction("Index");
case "Next Page":
using (ProposalRepository proposalRepository = new ProposalRepository())
{
Proposal proposal = proposalRepository.GetById(model.Proposal.ProposalID);
model.Proposal.UserID = proposalRepository.GetUserByName(MasterHelper.CurrentUsername).UserID;
model.Proposal.CustomerID = proposalRepository.GetCustomerByName(model.CustomerName).CustomerID;
if (model.Proposal.ProposalID != 0)
{
proposalRepository.Update(model.Proposal);
}
else
{
proposalRepository.AddProposal(model.Proposal);
}
proposalRepository.SaveChanges();
}
return RedirectToAction("GRQuestions", model.Proposal);
default:
return View();
}
}
1行のみを追加より良い方法と説明???
スロー:参照整合性制約違反が発生しました:参照制約を定義するプロパティの値は、プリンシパルと依存オブジェクト間で一貫していない、あなたが最初にそれをロードしたくない場合は、にご
Update
方法を変更します関係。 on mContext.Proposals.Attach(proposal); – user816153'Proposal'に' User'と 'Customer'のナビゲーションプロパティがありますか?彼らの価値は何ですか? –
ModelView.Proposalの意味ですか?私はページの<%:Html.TextBoxFor(m => m.Proposal.User.Username、新しい{@class = "customer_input"、@ readonly = "readonly"})%> – user816153