0

这个问题与 Visual Studio 2013、Asp.net MVC-5.2.2 项目有关:

我的班级中有一个 NotMapped 字符串属性:

    [NotMapped]
    public string myNotMappedAttribute{ get; set; }

我使用此属性(未映射到 Controller 的原始表中)来填充与所考虑的 Controller 的表具有外键关系的不同表中的列。同样,这个想法在创建中非常有效,但在编辑中无效。

我有一个在 Create.cshtml(剃刀)中工作的 MVC EditorFor 框,如下所示:

    <div class="editor-label">
        @Html.LabelFor(model => model.myNotMappedAttribute)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.myNotMappedAttribute)
        @Html.ValidationMessageFor(model => model.myNotMappedAttribute)
    </div>

但是,完全相同的剃刀代码在 Edit.cshtml 文件中使用时返回 null。

在控制器的 Edit post-back 方法中,此属性(并且只有此属性)为 null,其他属性具有正确的值。我什至移动了这个属性,所以它不会是最后一个属性,并且是正确的。

关于为什么这会在创建而不是编辑中起作用的任何想法?

4

1 回答 1

1

原来我使用的一个新的默认项目在控制器的回发编辑方法中有一些绑定属性:

public ActionResult Edit([Bind(Include = "myAttribute_1,myAttribute_2,myAttribute_3")] MyModel myModel)

可以忽略这一点,它会起作用:

[HttpPost]
    public ActionResult Edit(MyModel myModel)

据推测,将此属性添加到绑定列表也可以,尽管我自己没有亲自检查过。

注意:我真的不知道这个问题的答案,但琢磨着其中的奥秘,我最终看到了那些属性。我什至不认为值得提出原始问题的方法,因为我相当确定这将是 Razor 代码有问题。另外,我最初使用的下拉菜单不起作用,为了简单起见,我决定用文本框替换它;事实证明这是一个明智的决定,因为可以想象调试文本框的红鲱鱼的数量!

于 2015-01-26T20:46:00.397 回答