g-Jack 2015-11-11 10:25 采纳率: 0%
浏览 3426

当前上下文中不存在ViewData

在vs2013中编写的mvc项目,在cshtml端一直提示不存“当前上下文中不存在ViewData”,虽然不影响编译和运行,但是不能发布,已发布就提示这个错误,请问大神们如何解决,比较着急!!!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 18:34
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于视图模型(ViewModel)的属性没有正确设置到控制器。在ASP.NET MVC中,如果想使用视图模型中的属性来更新控制器的状态,那么必须将这些属性设置为public或者protected

    以下是一个示例:

    [ViewResult]
    public ActionResult MyAction()
    {
        var model = new SomeModel();
    
        // 设置model的一些属性
        model.Property1 = "Value1";
        model.Property2 = "Value2";
    
        return View(model);
    }
    

    在这个例子中,我们创建了一个名为SomeModel的新类,并将其添加到了视图模型中。然后,我们在视图文件中设置了一些属性,例如Property1Property2。最后,当用户请求我们的MyAction方法时,我们可以从视图模型获取这些属性并使用它们来更新控制器状态。

    另外,如果你是在使用EF6或以上版本的数据库操作,你可能需要确保你的数据库对象也具有相应的公共属性。例如,如果你有一个名为User的对象,你可以这样定义它:

    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
    
        public virtual ICollection<Role> Roles { get; set; }
    }
    

    现在,当你使用User对象来更新控制器状态时,你需要提供一个virtual的方法来访问其子对象。

    评论

报告相同问题?