おそらく、準備ができている明らかなものが欠けています。しかし、午前中ずっとこれを解読しようとした後、私はどこにも行きませんでした.
Web フォーム アプリでリバース エンジニアリングされた Code First Entity Framework を使用しています。
TryUpdateModel を呼び出す前に送信された値を更新しようとしていますが、それを理解できないようです。
これが私の現在のコードです:
public void frmOrganisation_UpdateItem([RouteData] int id)
{
Website.Models.CrmOrganisation item = null;
var query = from o in db.CrmOrganisations
where o.OrganisationId == id
select o;
item = query.Single();
if (item == null)
{
// The item wasn't found
ModelState.AddModelError("", String.Format("Item with id {0} was not found", id));
return;
}
TryUpdateModel(item);
if (ModelState.IsValid)
{
db.SaveChanges();
Response.Redirect(Helper_Methods.AppendQueryStringToUrl("status", "Changes Saved!"));
}
}
フォームのフィールドの 1 つは、入力する URL を探しているテキスト ボックス (id: txtWebsite) です。完全な URL (http:// を含む) をデータベースに保存します。ただし、ユーザーが http:// を入力する必要はありません。したがって、送信された値を傍受したいのですが、それが http を開始しない場合は、プレフィックスを付けたいと考えています。そうして初めて、TryUpdateModel (したがって検証) を実行したいと思います。
誰かが私を正しい方向に向けることができますか? クリス。
更新 - 私は少し先に進みました。
「TryUpdateModel」と「if (ModelState.IsValid)」の間に、「if (ModelState["Website"] != null && !string.IsNullOrWhiteSpace(ModelState["Website"].Value.RawValue.ToString) という行があります。 ())) ModelState["ウェブサイト"].Value = new ValueProviderResult("http://" + ModelState["ウェブサイト"].Value.RawValue, "http://" + ModelState["ウェブサイト"].Value. RawValue, CultureInfo.CurrentCulture);".
これはモデルの状態を更新していますが、これらの変更はデータベースに反映されていないため、「db.SaveChanges();」と推測します。私の変化が見られません。