0

在一个表单中,我试图在隐藏字段中保留几个值:

@using (Html.BeginForm("Report", "Product", FormMethod.Post))
{
    @Html.HiddenFor(m => m.Id) // <-- sets always the Id of subsequent ProductId
    @Html.HiddenFor(m => m.ProductId)

    @Html.TextAreaFor(x => x.Comment, 5)

    <input type="submit" value="@StringResources.Product_Report" class="btn" />
}

无论Id在模型中的字段中设置哪个值,都会设置ProductId属性的值。当我在第一次分配我的代码片段时停止调试器时,一切似乎都很好。但 Firebugs 向我展示了该ProductId属性的价值已被接管。

由于这是我的应用程序中的第二个此类问题,我认为这是框架中的一个错误。或者我做错了什么?

4

1 回答 1

0

最后我得到了解决方案。这是我的 GET 控制器操作的摘要:

public ActionResult Report(long id) // <-- this id is set in Razor
{
    var model = new ReportModel { ProductId = id };
    return View(model);
}

方法中的参数id是对的productIdIdRazor( @Html.HiddenFor(m => m.Id))中的属性值被方法参数覆盖

所以解决方案很简单:

public ActionResult Report(long productId)
{
    var model = new ReportModel { ProductId = productId };
    return View(model);
}

我不知道这种行为,对我来说它看起来仍然很奇怪。这是设计使然还是框架中的错误?

于 2013-06-30T06:55:52.343 回答