当我查看来自许多MVC来源的更多代码和博客文章时,我仍然没有把我的想法包含在发出请求时“发布”的内容。我意识到MVC不支持post,但是我很难找到可以解释它的资源来理解它。
在控制器内部public ActionResult nameOfAction(what the heck goes here?) { ... }
我的参数是什么?
有时看起来Visual Studio脚手架(int id, MyObject myobject)
用于编辑风格的操作 - 它包含了我的模型中的内容,但并非总是如此。
有时,对于删除式操作,它是(int id, FormCollection collection)
。为什么不在这里使用建模对象? FormCollection对象是否始终“已发布”?
有时候,我看到(RouteInfo routeInfo)
在我的MVC2 Intellisense中无法识别(仅限MVC1还是什么?)
如何/我应该如何建立这些参数?我认为这会在设计时帮助我很多。
答案 0 :(得分:2)
从MVC中的表单回发的是表单数据,其中包括键值对中的每个表单元素。
如果您只需要此信息,那么您将使用:
public ActionResult nameOfAction(string name, string lastName, string etc)
MVC有一些智能数据模型绑定,它接受表单数据并自动创建一个对象,该对象是域模型的一部分。例如,它可以使用提供的表单数据自动创建Person对象。
我认为存在安全问题,因为您网站的用户可能会发布不属于您表单的数据,并猜测您的模型注入自己的数据。 我不认为这是一个大问题,这就是我要去的方式。
我认为您可以使用防伪帮助程序来阻止用户发回表单中不允许的数据。 anti-forgery
答案 1 :(得分:1)
将强类型视图与视图模型和强类型帮助器一起使用。然后当你发布POST时,你应该得到一个该视图模型的实例。