【发布时间】:2012-02-03 15:46:42
【问题描述】:
public ActionResult SomeAction(int Id){
//Id is set to 2
var model = //get some thing from db using Id(2);
//Now model.Id is set to 9;
return View(model);
}
----------View----------
@Html.HiddenFor(x => x.Id)
当我查看源代码时,此隐藏字段设置为 2 而不是 9。如何让它映射到模型而不是映射到 URL 路由信息?
附:我不想重命名参数,因为除非我更改路由信息,否则我会丢失漂亮的 url。我已经这样做了,它确实有效,但不是我想要的。
【问题讨论】:
-
在我看来,您在渲染视图之前没有正确设置模型值。这似乎是描述你所看到的唯一方式。
-
您是否尝试过将@model 放在您的视图中?
-
是的,我在视图上还有其他几个“HiddenFor”,它们都正确映射到模型。只有这个映射不正确。在我将操作的参数名称从 id 更改为 x_id 后,它工作正常。但是我的网址从“/account/2”变成了“/account?x_id=2”。
-
表达式右侧的“x”是什么? x.身份证?除非您已标记“x”,否则您应该使用“Model.Id”。
-
@Splash-X 这是使用模型的标准 lambda。 x(或此处的任何字母)是模型。他的语法很好。
标签: asp.net-mvc asp.net-mvc-3 lambda model-binding