0

我可能遗漏了一些显而易见的东西。然而,在整个早上试图破解这个之后,我一无所获。

我在我的 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://)。但是,我不希望用户必须输入 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["Website"].Value.原始值,CultureInfo.CurrentCulture);"。

这是更新模型状态,但是,这些更改没有反映在数据库中,所以我假设“db.SaveChanges();” 没有看到我的变化。

4

1 回答 1

0

我找到了解决方案。

我根据按钮的 OnClick 事件更新字段,然后向更新方法发出命令。因此,使用点击按钮 --> OnClick 事件触发并更新表单 --> UpdateItem 方法被调用并更新模型和数据库。

于 2012-11-19T16:24:22.040 回答