在表单中,我试图在隐藏字段中保留多个值:
@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
属性的价值被接管了。
由于这是我的应用程序中的第二个问题,我认为这是框架中的一个错误。或者我做错了什么?
答案 0 :(得分:0)
最后我得到了解决方案。这是我的GET控制器操作的一个接口:
public ActionResult Report(long id) // <-- this id is set in Razor
{
var model = new ReportModel { ProductId = id };
return View(model);
}
方法中的参数id
正确productId
。 Razor中Id
属性的值(@Html.HiddenFor(m => m.Id)
)被方法参数覆盖。
所以解决方案很简单:
public ActionResult Report(long productId)
{
var model = new ReportModel { ProductId = productId };
return View(model);
}
我不知道这种行为对我而言看起来仍然很奇怪。这是设计还是框架中的错误?