2010-05-12 31 views
1

我试图用我创建了一个视图模型,以便回一些数据,它为我工作的projects.But之一,我从来没有在调试这个干什么,现在ASP.NET MVC视图不回发到Post方法并期待无参数构造函数?

public ActionResult Foo(string userkey) 
    { 
    vm.Value="Xvalue"; 
    return View(vm); 
    } 

    [HttpPost] 
    public ActionResult Foo(MyViewModel vm) 
    { 
    // process input 
    if (inputOK) 
     string value=vm.Value 
     return RedirectToAction("Index"); 
    return View(); 
    } 
public class MyViewModel 
{ 
public string Value { get; set; } 
public SomeClass newobj {get;set;} 

} 
public class SomeClass 
{ 
    public int id{get;set;} 
    public string str{get;set;} 
} 

所以它进入参数方法虽然在视图上我添加了一个表单和一个提交的按钮,并且该页面从viewmodel继承。我得到一个错误,说它期望一个无参数的构造函数,我该如何解决这个问题? 。我写了一个没有参数的post方法,它确实进入了该方法

+0

这段代码是否编译?因为你有两个方法具有相同的签名? – Rippo 2010-05-12 17:12:33

+0

以及我很抱歉...实际上第一种方法需要不同的参数,我现在已经纠正它.. – Vishal 2010-05-12 17:14:20

+0

很高兴你修复了代码,也请发布你的路由代码和你的窗体标签 – Rippo 2010-05-12 17:29:10

回答

2

您看到的错误很可能发生在ModelBinder中。预计在MyViewModel类中无参数构造函数,而不是Action。确保你的MyViewModel有一个无参数的构造函数。

public class MyViewModel 
{ 
    // stuff 
    public MyViewModel() {} 
} 
+0

嗯,我没有一个构造函数。我使用默认的构造函数 – Vishal 2010-05-12 17:16:12

+0

我们可以看到ViewModel的代码吗? – kmehta 2010-05-12 17:20:13

+0

我已经发布了上面的viewmodel ...并且实际上喜欢在我使用下拉列表来获取someclass对象的值这个问题的表单上...我的意思是我在Get方法上创建了一个下拉列表并在表单上使用Model.Dropdownlist,这就是它出错的地方......如果我评论它...它在带参数的方法..但我不明白,因为我有一个默认的构造函数。 – Vishal 2010-05-12 17:25:23

相关问题