繁体   English   中英

从 ASP.NET MVC 视图返回时如何在 object 上保留相关实体

[英]How to keep related entities on object when returned from ASP.NET MVC view

我正在使用实体框架开发 ASP.NET MVC RC2 应用程序。

这是我的实体图。

在我的存储库中,我得到这样的实体:

public Product GetProduct(int id)
{
    return (from c in _entities.ProductSet.Include("User")
           where c.Id == id
           select c).FirstOrDefault();
}

我的观点:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SampleApp.Models.Product>" %>

编辑产品

<h2>Edit product</h2>

<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>

<% using (Html.BeginForm()) {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Id">Id:</label>
            <%=  Model.Id %>
        </p>
        <p>
            <label for="Title">Title:</label>
            <%= Html.TextBox("Title", Model.Title) %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
        <p>
            <label for="Body">Body:</label>
            <%= Html.TextBox("Body", Model.Body) %>
            <%= Html.ValidationMessage("Body", "*") %>
        </p>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

<div>
    <%=Html.ActionLink("Back to List", "Index") %>
</div>

问题和我的问题是:当从帖子视图返回“产品”实体时,链接实体“用户”是 null。 为什么会这样,有没有办法解决这个问题?

因为 productToEdit 是从表单字段填充的新产品 object,如果您没有用户字段,您将如何填充用户实体

对于“解决方法”,首先从数据库中获取产品,使用 productToEdit 中的已编辑字段对其进行编辑并保存到数据库

您还可以选择使用了解您的 model 和持久性策略的自定义 ModelBinder 将图形完全加载回 memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM