2
DBに8つの小道具/ 8つの列を持つクラスがあります。しかし、編集ページでは、ユーザーがそれを変更したくないので、AddedDateまたはUserIDフィールドを表示したくありません。ここで asp.net mvc3 UpdateModelの除外プロパティが機能していません
public class Voucher
{
public int ID { get; set; }
public string Title { get; set; }
public string SiteName { get; set; }
public string DealURL { get; set; }
public DateTime AddedDate { get; set; }
public DateTime? ExpirationDate { get; set; }
public string VoucherFileURL { get; set; }
public Guid UserID { get; set; }
}
は、私が編集コントローラ用に持っているものです:System.Data.SqlServerCe.SqlCeException::私は提出をクリックすると、編集ページで
// POST: /Voucher/Edit/5
[HttpPost]
public ActionResult Edit(Voucher voucher)
{
if (ModelState.IsValid)
{
string[] excludeProperties = { "AddedDate", "UserID" };
UpdateModel(ModelState, "", null, excludeProperties);
db.Entry(voucher).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(voucher);
}
、私は次のエラーを得たのオーバーフローが発生しましたdatetimeに変換しています。
AddedDateがビューモデルから除外されず、エラーが発生したようです。
修正方法をお知らせください。ありがとう!
public ActionResult Edit([Bind(Exclude = "AddedDate")]Voucher voucher)
運のいずれか
私はSTHを誤解だと思う私は、バウチャーオブジェクトがにModelStateと同じであり、両者は8つの性質を持っていると思ったので、私は。。 –
モデルステートメントの状態がモデルステートでない場合は、ステートはありません。バウチャーMVCを受け取り、検証の結果をmodelstateに出力するまでに、モデルステートには2つのプロパティが除外されます。 updateModelは、ポストされた値やURLの値で 'モデルオブジェクトを更新する'場合に使用されます。これらのプロパティを持つvoucherという名前のオブジェクトが既に与えられています。 –
ユーザーがバウチャーを編集するとき、私は追加された日付またはユーザーIDを表示または変更することを許可しません。したがって、Edit Controllerに渡されたVoucher Objectには必ず、addedDateまたはUserIDの値は含まれません。バウチャーオブジェクトがdbに保存されると、エラーが発生します。それに対する解決策はありますか?あなたが理解して欲しいです。ありがとう。 –