我可能遗漏了一些显而易见的东西。然而,在整个早上试图破解这个之后,我一无所获。
我在我的 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();” 没有看到我的变化。