gpt4 book ai didi

asp.net-mvc-3 - MVC3 - 从 RenderPartial 传回模型

转载 作者:行者123 更新时间:2023-12-04 22:07:07 29 4
gpt4 key购买 nike

我在 MVC3 中有一个带有“pageModel”模型的页面。

在此页面中,我有:

@{ Html.RenderPartial("_subPage", Model.subModel); } (Pagemodel.submodel)

在我的 Controller 中,我正在做:
 [Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Results(pagemodel model, string frmAction)
{
}

页面第一次加载正常,但是当我回发到 httpPost 时行动, model.submodel始终为空。

我的问题是,如何从 RenderPartial 返回更新的模型(如果有的话)。我可以让我的模型进入局部,但不能返回!

最佳答案

部分的问题是它们不保留导航上下文。这意味着您可能放在此部分中的任何输入字段都将具有不正确的名称,并且默认模型绑定(bind)器将无法在您 POST 时检索回值。您的 HTML 将如下所示:

<input type="text" name="Prop1" value="property 1 value" />
<input type="text" name="Prop2" value="property 2 value" />

而正确的是:
<input type="text" name="subModel.Prop1" value="property 1 value" />
<input type="text" name="subModel.Prop2" value="property 2 value" />

为了实现这个正确的标记,我建议您使用编辑器模板。

所以你替换:
@{ Html.RenderPartial("_subPage", Model.subModel); }

和:
@Html.EditorFor(x => x.subModel)

然后你移动你的 _subPage.cshtml部分进入 ~/Views/Shared/EditorTemplates/SubModelType.cshtml在哪里 SubModelTypesubModel 的类型属性(property):
@model SubModelType
@Html.EditorFor(x => x.Prop1)
@Html.EditorFor(x => x.Prop2)

现在,当您查看生成的 HTML 时,相应的输入字段名称应以 subModel 为前缀。在 POST Controller 操作中, model.subModel这次将根据用户在输入字段中输入的值正确初始化和填充属性。

关于asp.net-mvc-3 - MVC3 - 从 RenderPartial 传回模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466426/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com