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

2023-12-01

我有一个 User 类,然后是另一个具有一些特殊用户属性的 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>

我得到的错误 -

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

我在这里做错了什么?

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

控制器 -

 public ActionResult Register()
        {
            return View(userRepository.Current);
        }

这里 Current 的类型是“User”

Model -

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; }
    }

_CreateOrEdit 的模型声明是

@model UserSpecial

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Razor 代理类型错误。系统.数据.实体.动态代理 的相关文章

随机推荐