Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html.BeginForm调用错误的URL并执行操作/1_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# Html.BeginForm调用错误的URL并执行操作/1

C# Html.BeginForm调用错误的URL并执行操作/1,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,在我的申请中,我在“/Project/AddFund/1”中有一个表格: 这是一个例外: No parameterless constructor defined for this object. [MissingMethodException: No parameterless constructor defined for this object.] exception is thrown 正如StephenMuecke在评论中所说,我使用的ModelView有一个自定义构造函数,但没有默

在我的申请中,我在“/Project/AddFund/1”中有一个表格:

这是一个例外:

No parameterless constructor defined for this object. [MissingMethodException: No parameterless constructor defined for this object.] exception is thrown
正如StephenMuecke在评论中所说,我使用的ModelView有一个自定义构造函数,但没有默认构造函数……这就是错误

如何使此窗体与此控制器一起工作


提前感谢

当您对具有参数的操作发出请求时,MVC会尝试为您创建这些参数,并使用来自请求正文、路由值、查询字符串的数据填充这些参数。。。(这些是价值提供者)

这个过程称为“模型绑定”。而且,如果有一个参数是对象,比如
AddFundToProjectViewModel
,那么模型绑定的第一步是创建该对象的空实例,它需要一个默认(无参数)构造函数

构建对象后,它将尝试使用适当的名称设置来自值提供程序的属性值


默认情况下,所有类都有一个默认(无参数)构造函数。但是,如果使用参数定义构造函数,则不提供默认构造函数。因此,要解决您的问题,请向
AddFundToProjectViewModel
类添加一个无参数构造函数,以便模型绑定器可以完成它的工作。

添加
字符串?ID
参数?如果GET方法是
public ActionResult AddFund(int ID)
,则添加路由值
1
。这与为什么你的帖子不起作用无关。那么你的实际问题是什么呢。你的模型没有约束力吗?如果是这样,发布模型、获取方法和视图。(route参数所做的只是将
AddFundToProjectViewModel
ID
属性绑定到
1
的值,当您发回时)基于您的编辑,我建议删除该内部方法。这种代码属于控制器,而不是视图模型。但是你已经显示了
CreateProjectViewModel
,而不是
AddFundToProjectViewModel
@StephenMuecke你又对了,我创建了一个自定义构造函数,但没有默认值。我同意你所说的那种代码的位置。
<form method="post" action="/Project/AddFund/1" novalidate="novalidate"><input type="hidden" value="tM8Gdmnki5mdHiTeuc9m_Ga_LY0hPhuSyAiXs6Ae9yedUn9h-sS-ihBC5Iy3NZtrxBmA7TRbV_jEPgvztuHT3Y6seGZvaLWJUemwg2_5OBR23dVELfJ1wHb0pvAcAOuu0huy_PzAozsQtxZUSBFUQw2" name="__RequestVerificationToken">    <div>
...
</form>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddFund(AddFundToProjectViewModel model)
{...}
No parameterless constructor defined for this object. [MissingMethodException: No parameterless constructor defined for this object.] exception is thrown