首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用(尝试)UpdateModel?

如何使用(尝试)UpdateModel?
EN

Stack Overflow用户
提问于 2011-07-29 02:05:24
回答 1查看 1.2K关注 0票数 2

使用UpdateModel的正确方法是什么?

当我运行这个:

  • TryUpdateModel返回true,
  • ViewData没有错误,
  • 但是my Proxy没有更新。

动作法

代码语言:javascript
复制
public void Save(string TypeName, int Id, FormCollection idontknow) {
    var types = Assembly.GetExecutingAssembly().GetTypes();
    var ObjectType=(from t in types where t.Name == TypeName select t).First();
    var Proxy = context.Set(ObjectType).Find(Id); // EF 4.1
    if (TryUpdateModel(Proxy, TypeName)) {
        var x = ViewData.GetModelStateErrors(); // no errors
    }
}

发布的数据

代码语言:javascript
复制
TypeName=Thing&Id=1&Thing.Id=1&Thing.Name=hello&Thing.OptionID=2

事物类

代码语言:javascript
复制
public class Thing : Base {
    public virtual Nullable<int> OptionID { get; set; }
    public virtual Option Option { get; set; }
    public virtual ICollection<ListItem> ListItems { get; set; }
}
public class Base {
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    [NotMapped]
    public virtual int? EntityState { get; set; }
}

编辑:我也尝试显式地传递表单集合TryUpdateModel(Proxy, TypeName, idontknow)

编辑#2: (响应NickLarsen)

  1. 重新启动VS和服务器,没有改变。
  2. 值实际上在FormCollection中。
  3. 模拟数据工作!我知道我一定是搞砸了什么东西。
  4. 使用调试器检查值.
EN

回答 1

Stack Overflow用户

发布于 2011-07-29 03:01:51

我删除了所有的EF内容,并试图只获取查询字符串来填充模型中的值.而且效果很好。

代码语言:javascript
复制
//controller class
public ActionResult Save(string TypeName, int Id, FormCollection idontknow)
{
    var Proxy = new Thing
    {
        Id = 33,
        OptionID = 2234,
        Name = "tony",
    };
    if (TryUpdateModel(Proxy, TypeName))
    {
        ViewBag.Message = "WInner";
    }

    return RedirectToAction("Index");
}
//end controller class

public class Thing : Base
{
    public virtual Nullable<int> OptionID { get; set; }
}
public class Base
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

老实说,我想不出您的代码中有什么可以阻止它工作,但我建议逐个查看列表,并在每一步之后进行测试。

  1. 保存您的进度并重新启动VS和您的开发服务器
  2. ,检查这些值实际上是否在表单数据中,可能有什么东西妨碍了它们的实现。
  3. 像我一样屏蔽了一些垃圾数据。(检查问题是否与EF有关)
  4. ,您如何识别该代理没有被更新?在调试器中,页面等?
  5. 编辑您的问题,并回答以上所有问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6867909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档