gpt4 book ai didi

c# - Id POST 作为隐藏字段但在 Controller 中为空

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:50 26 4
gpt4 key购买 nike

我有一个表格:

@using (Html.BeginForm("QuoteUpdate", "Home", FormMethod.Post))
{

@Html.DropDownList("network", Model.availableNetworks);
@Html.DropDownList("grade", Model.grades);
@Html.HiddenFor(o => o.Product.id);

<button type="submit">Get Quote</button>
}

还有一个 Controller :

    [HttpPost]
public ActionResult QuoteUpdate(int? id, string network, string grade )
{
}

提交表单后,id 属性始终为 null。我检查了源代码,隐藏字段在呈现的 HTML 中具有正确的值。

我不明白为什么这个参数总是空的。我错过了什么?

最佳答案

由于您正在访问模型中的嵌套属性,因此生成的 HTML 可能如下所示:

<input type="hidden" id="Product_id" name="Product.id" />

当您的表单发布到 Controller 操作时,没有与 Product.Id 匹配的参数。

您可以通过更改生成的 input 名称来解决此问题(有关如何执行此操作的更多信息,请参见 this answer):

@Html.HiddenFor(o => o.Product.id, new { Name = "id" });

这将生成:

<input type="hidden" id="Product_id" name="id" />

然后事情应该模型正确绑定(bind)。

关于c# - Id POST 作为隐藏字段但在 Controller 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890828/

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