【发布时间】:2010-03-23 01:44:53
【问题描述】:
MVC 新手问题重新活页夹。假设我有两个强类型的部分动作,它们碰巧有一个同名的模型属性,并在同一个包含页面中呈现,即:
Class Friend {string Name {get; set ;} DateTime DOB {get; set ;}}
Class Foe {string Name {get; set ;} string ReasonForDislike {get; set ;}}
两个部分都有一行:
<%= Html.TextBoxFor(model => model.Name) %>
以及相关的控制器动作:
public ActionResult SaveFriend(Friend friend)
public ActionResult SaveFoe(Foe foe)
我的问题是两者都会在我的包含页面上以相同的 id 呈现(当然,由于很多原因很糟糕)。我知道 [Bind] 属性允许我添加前缀,从而生成代码:
public ActionResult SaveFriend([Bind(Prefix = “friend”)] Friend friend)
<%= Html.TextBox("friend.Name", Model. Name) %> //Boo, no TextBoxFor :(
但这仍然没有削减它。我几乎可以容忍强类型 TextBoxFor 助手的丢失,但我还没有让客户端验证与前缀一起工作: 我试过了:
<%= Html.ValidationMessage("friend.Name") %>
...以及我能想到的所有其他变体。
我似乎需要模型在两个方向上都知道前缀,但绑定仅在映射入站请求时适用。这似乎(对我来说)是一个常见的场景,但我正在努力寻找那里的例子。我错过了什么!
提前致谢。
【问题讨论】:
标签: asp.net-mvc data-binding model prefix