私はEDMを持っています。Currentフィールドのブール値に基づいて表示されるときに、モデルをビューに渡します(現在のレコードは1つだけです)。
public ActionResult Index()
{
myEDM db = new MyEDM();
MyEDMModel model = db.MyEDMTable.Where(g => g.Current == 1).First();
return View(model);
}
テーブルには10列あります
fld1 fld2 fld3 ......
各フィールドは、比較のためにデフォルト値のemptystring''で作成されます(Nullと比較することはできません)。
ビューでは、各フィールドのコンテンツに基づいて背景画像とHTML.Actionlinkを表示します。
@if (Model.fldNo1 == "")
{
<td class="number">
@Html.ActionLink("1", "TakeNumber", "Numbers", new { Model, number = 1 })
</td>
}
else
{
<td class="numberTaken">
@Html.ActionLink("1", "NumberTaken", "Home", new { Model, number = 1 })
</td>
}
各フィールドは、ユーザーが取得および予約できます。フィールドごとに1人のユーザーのみ(明らかに)、フィールド!=''の場合、何もする必要はありません。フィールドは他の誰かによって予約されています。可能な場合、フィールドにはuserIDが入力されます。
ここで私の質問が出てきます。EDMからのページのロードからモデルを渡しました。次に、ユーザーがビューをたとえば5分間閲覧してから、特定の番号を予約することを選択した場合。5分間のブラウジング時間内に別のユーザーがこのフィールドを予約したかどうかを確認するには、EDMからモデルを更新する必要がありますか、それとも渡されたモデルが動的に更新されますか?すなわち
私はこれをしますか:
myEDM db = new MyEDM();
Int32 muser = (Int32)Membership.GetUser().ProviderUserKey;
String user = muser.ToString();
if (number == 1 && model.fldNo1 == "")
{
model.fldNo1 = user;
UpdateModel(model);
db.SaveChanges();
}
elseif ...........
または、最初にモデルをリコールまたは更新して、ユーザーがブラウジングしている間(たとえば、5分)に特定のフィールドのエントリが入力されていないことを確認する必要があります。
myEDM db = new MyEDM();
myEDMModel updateEDMModel = db.MyEDMTable.Where(g => g.id == model.id).First
Int32 muser = (Int32)Membership.GetUser().ProviderUserKey;
String user = muser.ToString();
if (number == 1 && updateEDMModel.fldNo1 == "")
{
updateEDMModel.fldNo1 = user;
UpdateModel(updateEDMModel);
db.SaveChanges();
}
elseif ...........
残念ながら、私は一人のバンドであり、これをテストするのは非常に困難です。