Asp.net mvc 如何将表单值映射到ASP.NET MVC HTTP Post场景的对象?

Asp.net mvc 如何将表单值映射到ASP.NET MVC HTTP Post场景的对象?,asp.net-mvc,Asp.net Mvc,我有一个ASP.NETMVC应用程序的简单表单。我有一个表单属性,它的名称与不动产名称不同(无论出于何种原因) 我知道有[Bind(Exlcude=“”,Include=“”)]属性,但在这种情况下这对我没有帮助 我也不希望在Action方法签名中有(FormsCollection FormsCollection)参数 有没有其他方法可以定义映射 例如 干杯 我相信您需要在控制器参数中定义它,否则它将不知道接受什么 public ActionResult GameServer(string Ga

我有一个ASP.NETMVC应用程序的简单表单。我有一个表单属性,它的名称与不动产名称不同(无论出于何种原因)

我知道有
[Bind(Exlcude=“”,Include=“”)]
属性,但在这种情况下这对我没有帮助

我也不希望在Action方法签名中有
(FormsCollection FormsCollection)
参数

有没有其他方法可以定义映射

例如


干杯

我相信您需要在控制器参数中定义它,否则它将不知道接受什么

public ActionResult GameServer(string GameServer){
    GServer myGameServer = new GServer();
    myGameServer.GameServerId.ToString() = GameServer;
    return View("GameServer");
}

你可以在你的视图页面上输入你想要的参数的名称/id,它会根据你视图上的id自动知道要接收的值

将FormCollection作为参数传递有什么不对?我必须做和你一样的事情,我只是在BindAttribute中排除了GameServer属性


您必须注意的另一件事是,
Html.ValidationMessage(“GameServer”,“*”)
将无法工作,因为基础模型不包含GameServer属性。您必须将其添加到模型中。我不知道是否有更好的方法,我没有找到,但需要它才能使
ValidationMessage
works

您可以创建自己的ModelBinder()来进行自定义映射。

在我看来,这是一种过激的行为,但你可能有自己的理由……

?这个例子正确吗???不-我回家后会解决这个问题。它应该是一个文本框。是错误的复制/粘贴错误。ValidateMessage行是错误的。我复制/粘贴了错误的行。它应该是一个文本框。我回家后会重新编辑的。我正在考虑使用表单集合。。但我好奇地想知道,如果没有它,它是否可以完成。
<select id="GameServer" name="GameServer">
    <option value="2">PewPew</option>
</select>
myGameServer.GameServerId = 2; // PewPew.
public ActionResult GameServer(string GameServer){
    GServer myGameServer = new GServer();
    myGameServer.GameServerId.ToString() = GameServer;
    return View("GameServer");
}