更改表单提交和TryUpdateModel之间的值

时间:2012-11-19 14:17:31

标签: c# .net entity-framework webforms

我可能遗漏了一些显而易见的东西。然而,在整个上午试图解决这个问题之后,我无处可去。

我在我的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();”没有看到我的变化。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我正在根据按钮的OnClick事件更新字段,然后将命令发布到update方法。所以,使用点击按钮 - > OnClick事件触发和更新表单 - >调用UpdateItem方法并更新模型和数据库。