我可能遗漏了一些显而易见的东西。然而,在整个上午试图解决这个问题之后,我无处可去。
我在我的Web表单应用程序上使用了反向工程代码第一实体框架。
我试图在调用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!"));
}
}
表单上的一个字段是文本框(id:txtWebsite),它正在查找要输入的URL。我将在数据库中存储完整的URL(http:// included)。但是,我不希望用户必须输入http://。因此,我想拦截提交的值,如果它没有启动http,我想要为它添加前缀。只有这样才能发生TryUpdateModel(并因此验证)。
有人能指出我正确的方向吗? 克里斯。
更新 - 我已经进一步了解。
在我的“TryUpdateModel”和“if(ModelState.IsValid)”之间,我现在有一行“if(ModelState [”Website“]!= null&&!string.IsNullOrWhiteSpace(ModelState [”Website“] .Value.RawValue.ToString()))ModelState [“Website”]。Value = new ValueProviderResult(“http://”+ ModelState [“Website”]。Value.RawValue,“http://”+ ModelState [“网站“] .Value.RawValue,CultureInfo.CurrentCulture);”。
这是更新模型状态,但是,这些更改没有反映在数据库中,所以我假设“db.SaveChanges();”没有看到我的变化。
答案 0 :(得分:0)
我找到了解决方案。
我正在根据按钮的OnClick事件更新字段,然后将命令发布到update方法。所以,使用点击按钮 - > OnClick事件触发和更新表单 - >调用UpdateItem方法并更新模型和数据库。