假设我将控制器操作定义为:
public ActionResult(MyModel model, string someParameter)
{
// do stuff
}
我有一个MyModel类型的自定义模型绑定器,并且视图中有一个名为“SomeParameter”的表单字段未绑定到模型。 ASP.NET MVC如何知道将Request.Form["SomeParameter"]
的值作为“someParameter”参数的值传递给操作?
答案 0 :(得分:3)
ASP.NET使用反射来确定要调用的正确方法并构建要传递的参数。它基于FormCollection数组执行此操作。基本上它会看到模型。*键入那里和FormCollection["someParameter"]
它首先尝试Action(model,someParameter)
然后Action(model)
然后Action()
。由于它找到一个带有model和someParameter参数的Action,因此它会尝试将它们转换为参数类型。
然而,默认情况下它会盲目地引入一些安全风险,this blog post会对此进行更详细的介绍。
如果有人可以发布链接,更详细地描述了如何在引擎盖下完成ModelBinding。
答案 1 :(得分:1)
因为默认模型绑定器将用于someParameter,除非您另行指定。默认的模型绑定器完全按照您的描述进行操作。
答案 2 :(得分:1)
答案 3 :(得分:0)
听起来你需要一个模型绑定器。这些允许您定义表单数据如何绑定到模型参数。您可以通过以下方式阅读更多相关信息:
答案 4 :(得分:0)
最简单的方法之一是在页面上使用Html项目,其名称与action方法中的输入参数相同。 EX)在View中我们有:
<input name="refNo" type="text">
然后在Action方法中:
public ActionResult getOrders(string refNo)
因此,它只是将“refNo”的值绑定到“getOrders”操作的输入参数。