MVC NotMapped 属性编辑器用于在 Edit.cshtml 中返回空值,但不返回 Create.cshtml



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

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

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

我使用此属性(未映射在控制器的原始表中)来填充与正在考虑的控制器表具有外键关系的不同表中的列。同样,这个想法在创建中完美有效,但不能编辑。

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

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

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

在控制器的 Edit 回发方法中,此属性(且仅此属性)为 null,其他属性具有正确的值。 我什至移动了此属性,因此它不会是最后一个属性,而是在它正确之后的一个属性。

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

事实证明,我使用的新默认项目在控制器的回发 Edit 方法中具有一些绑定属性:

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

可以省略这一点,它将起作用:

[HttpPost]
    public ActionResult Edit(MyModel myModel)

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

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

最新更新