我有一个ASP.NET MVC应用程序的简单表单。我有一个表单属性,其名称与实际属性名称不同(无论出于何种原因)。
我知道有[Bind(Exlcude="", Include="")]
属性,但在这种情况下,这对我没有帮助。
我也不希望在Action方法签名中有一个(FormsCollection formsCollection)
参数。
还有另一种定义映射的方法吗?
例如
<%= Html.ValidationMessage("GameServer", "*")%>
导致..
<select id="GameServer" name="GameServer">
<option value="2">PewPew</option>
</select>
这需要映射到..
myGameServer.GameServerId = 2; // PewPew.
喝彩!
答案 0 :(得分:1)
我相信你需要在你的控制器参数中定义它,否则它不会有任何线索接受什么。
public ActionResult GameServer(string GameServer){
GServer myGameServer = new GServer();
myGameServer.GameServerId.ToString() = GameServer;
return View("GameServer");
}
您可以在视图页面上传入您尝试查找的参数的名称/ ID,它会根据您视图中的ID自动知道要接收的值。
答案 1 :(得分:1)
将FormCollection作为参数传递出了什么问题?我必须做与你相同的事情,我只是在BindAttribute中排除了GameServer属性。
您必须注意的另一件事是Html.ValidationMessage("GameServer", "*")
不起作用,因为底层模型不包含GameServer属性。您必须将其添加到模型中。我不知道是否有更好的方法可以做到,我没有找到,但需要让ValidationMessage
作品
答案 2 :(得分:0)
您可以创建自己的ModelBinder(see how to)来进行自定义映射 一个矫枉过正的IMO,但你可能有你的理由......