MVC共享强类型部分视图

时间:2013-11-18 03:48:08

标签: asp.net-mvc-4 entity-framework-5

我正在尝试渲染强类型的局部视图,并在不同的父视图之间共享它。

所以我会有一个父视图A,它是一个编辑表单,其中包含元素以及位置的局部视图。

@model Model.Contact
....                
@Html.HiddenFor(model => model.LocationID)
@{Html.RenderPartial("../Shared/_Location", Model.Location);}

部分视图是编辑表单更新/插入表单

@model Model.Location
....with form elements bound to model passed
 <div class="row-fluid">
    <div class="span6">
        Address 1<br />
        @Html.EditorFor(model => model.Address1)<br />
    </div>
    <div class="span6">
        Address 2<br />
        @Html.EditorFor(model => model.Address2)<br />
    </div>
</div>......

和视图B受限于不同的模型,也需要更新位置。

@model Model.JobAssignment
....                
@Html.HiddenFor(model => model.OriginLocationID)
@{Html.RenderPartial("../Shared/_Location", Model.OriginLocation);}

它是OriginLocation,因为这个实体有多个FK到Location,因此我在CodeFirstMapping中以不同方式命名它们

    [ForeignKey("OriginLocationID")]
    public virtual Location OriginLocation { get; set; }
    [ForeignKey("DestinationLocationID")]
    public virtual Location DestinationLocation { get; set; }

数据库和实体都可以通过Job和Contact正确设置到位置。

之前我所拥有的是位置局部视图不会获得位置实体/模型,而是绑定到任何父模型就像@model Model.Contact就像父视图一样,这样可以正常工作,作为局部视图中的控件带有位置。*和Location_ *作为ID的前缀,它的作用很神奇,控件为:@ Html.EditorFor(model =&gt; model.Location.Address1)

但我试图分享位置局部视图,就像我曾经在asp.net中使用UserControls一样,所以想把它绑定到

我无法让它工作,我得到的最接近的是绑定数据,但在编辑/保存时我得到了奇怪的错误。

“发生了参照完整性约束违规:当依赖对象不变时,除非将其设置为关联的主体对象,否则无法更改作为参照完整性约束一部分的主键属性。必须跟踪主要对象,并且不标记为删除。“

请有人指出我正确的方向!

0 个答案:

没有答案