asp.net,剃刀:当模型返回时,它将重新构造它

ubof19bj  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(134)

我这样夸大我观点

public ActionResult Tagging(int id, ItemType itemType, bool autoCloseWindow = false, bool refreshOpener = false)
        {
            var model = new TaggingViewModel(id, itemType);

            return View("Tagging", model);
        }

我给予了参数id和itemtype来检索正确的数据。
我这样显示数据(正确):

<td>
    @Html.CheckBoxFor(m => m.MainNodes[i].children[y].IsChecked, new { @class = "langCheck" })
    @Html.HiddenFor(m => m.MainNodes[i].children[y].ItemId)
    @Html.HiddenFor(m => m.MainNodes[i].children[y].GlobalTaggingId)
    @Html.HiddenFor(m => m.MainNodes[i].children[y].ItemType)
</td>

但如果我在表单字段中按下保存,则模型返回为空:

我发现原因是在saveTagging方法的参数中我重新启动了模型,但是没有参数(因为你不能在这里传递它们),因此返回了一个空模型。
但是:
1.)我如何给予它参数?
2.)即使我给予参数说静态,我不希望旧模型返回,我希望从前端更改模型返回。

nhaq1z21

nhaq1z211#

事实证明,我做的几乎每件事都是对的。
您不能简单地返回带有ID的整个模型,但您可以简单地返回所需模型的属性。这意味着我将Action Result中的参数从:

public ActionResult SaveTagging(TaggingViewModel taggedModel, bool autoCloseWindow = false)

至:

public ActionResult SaveTagging(List<NodeModelWithCheckBoxes> MainNodes, bool autoCloseWindow = false)

List<NodeModelWithCheckBoxes> MainNodes

是返回空值的列表,这个c的列表是我的模型taggedModel的一部分,这样,它就不会被重新示例化,所有的值都被传递到这个对象中。

相关问题