我有一个 EDM。当基于 Current 字段的布尔值显示模型时,我将模型传递给视图(只有一条记录是当前的):
public ActionResult Index()
{
myEDM db = new MyEDM();
MyEDMModel model = db.MyEDMTable.Where(g => g.Current == 1).First();
return View(model);
}
该表有 10 列
fld1 fld2 fld3 ......
出于比较原因(我无法与 Null 比较),每个字段都使用默认值 emptystring '' 创建。
在视图中,我根据每个字段的内容显示背景图像和 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>
}
每个字段都可以由用户获取和保留。每个字段只有一个用户(显然),如果字段 != '' 那么我什么都不做。该字段由其他人保留。如果可用,该字段将填充用户 ID。
这就是我的问题所在。我已经从 EDM 的页面加载中传递了模型。如果用户随后浏览视图例如 5 分钟,然后选择保留特定号码。为了检查其他用户是否在 5 分钟的浏览时间内保留了此字段,我需要从 EDM 刷新模型还是动态更新传递的模型?IE
我这样做:
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 ...........
不幸的是,我是一个单人乐队,我很难测试这个。