不确定这是不是错误,或者我错过了什么。
当我有一个路由参数“bar”并且在我的视图模型中具有相同名称“Bar”的属性时,MVC会混淆并在html帮助器中显示意外结果。让我们看一下。
(代码是自由输入的,所以它可能无法正常工作,但我希望它足以得到我刚才偶然发现的内容)
让我们从以下控制器开始:
public class MyController : Controller {
...
[Route("my/route/{bar}")]
public ActionResult Foo(string bar) {
...
var viewModel = new MyViewModel() { Bar = "baz"; }
return this.View(viewModel);
}
...
}
我们将以下视图模型传递给视图:
public class MyViewModel {
...
public string Bar { get; set; }
...
}
在视图中,他们会有这样的事情:
...
@Html.LabelFor(l => l.Bar)
@Html.EditorFor(m => m.Bar)
...
当我们召集这样的行动时:
@Html.ActionLink("Link", "Foo", "MyController", new { bar = "mystring" })
EditorFor中的预期结果为"baz"
,但不是的情况。实际上它是"mystring"
。即使@Model.Bar
会打印预期结果"baz"
。
这是期望的行为还是(已知的)错误?如果没有,我在哪里报告这个?
祝你好运