Razor 代理类型错误。系统.数据.实体.动态代理

MoX*_*lod 2 razor asp.net-mvc-3

我有一个 User 类,然后是另一个具有一些特殊用户属性的 Type UserSpecial。我在 razor 中将它传递给部分方法类以创建 UserSpecial 表单,该表单需要一个 User Special 类型的对象,但出现错误。

@model User
    @using (Html.BeginForm())
    { 

        @Html.ValidationSummary(true)
        <fieldset>
            @Html.Partial("../UserSpecial/_CreateOrEdit", Model.UserSpecial)
            <p class="submit clear">
                <input type="submit" value="Register" />
            </p>
        </fieldset>
    }
</div>
Run Code Online (Sandbox Code Playgroud)

我得到的错误 -

传入字典的模型项的类型为“System.Data.Entity.DynamicProxies.User_AC9DED50C9495788046D6BFA3B90DDFC6AD2884157CF23C91FCB3B7A55F70B18”,但此字典需要类型为“UserSpecial”的模型项

我在这里做错了什么?

从我的控制器中,我只是传递了我存储在会话状态中的当前用户对象。

控制器 -

 public ActionResult Register()
        {
            return View(userRepository.Current);
        }
Run Code Online (Sandbox Code Playgroud)

这里 Current 是“用户”类型

模型 -

public partial class User
    {
        public User()
        {
        }

        public int UserID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Sex { get; set; }
        public System.DateTime CreateDate { get; set; }
        public string Email { get; set; }
        public string HomeTown { get; set; }
        public short UserType { get; set; }

        public virtual UserSpecial UserSpecial { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

_CreateOrEdit 的模型声明是

@model UserSpecial
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 5

不知道是什么userRepository.Current,但它似乎没有正确/急切地加载该UserSpecial属性。为什么不使用视图模型?为什么要将域实体模型传递给视图?这是不好的做法。您应该定义仅包含视图所需数据的视图模型,然后在域模型和将传递给视图的相应视图模型之间的控制器操作映射中定义。