2010-08-13 36 views
1

我使用MVC 2.0與Html.ListBoxFor如下定義無參數的構造函數:system.missingMethodException而:此對象

<% using (Html.BeginForm()) { %> 

     <input type="submit" value=">" /> 

     <%= Html.ListBoxFor(x => x.lstTest, new MultiSelectList(new [] {"someone", "crap", "why"})) %> 

    <% } %> 

當我點擊提交輸入下面什麼也沒有選擇按鈕,回發好的,當我選擇列表框中的3個項目之一時,它會拋出此錯誤:

System.MissingMethodException: No parameterless constructor defined for this object. 

任何想法?這裏是我的控制器代碼:

[HandleError] 
public class HomeController : Controller 
{ 
    public HomeController() 
    { 

    } 

    public ActionResult Index() 
    { 
     ViewData["Message"] = "Test Harness"; 

     return View(); 
    } 

    [HttpGet] 
    public ActionResult About() 
    { 
     ViewData["mykey"] = "Test Harness"; 

     LogOnModel model = new LogOnModel(); 
     model.lstTest = new MultiSelectList(new [] {"A", "B", "C"}); 

     return View(model); 
    } 


    [HttpPost] 
    public ActionResult About(LogOnModel model) 
    { 
     ViewData["mykey"] = "Test Harness"; 

     model.lstTest = new MultiSelectList(new [] { "" }); 

     return View(model); 
    } 
} 

回答

0

此錯誤來自ControllerFactory而不是視圖。這是說你沒有在你的控制器中使用無斜槓的構造函數。 ASP.NET MVC的DefaultControllerFactory只能用一個公共參數較少的構造函數實例化一個Controller。如果你插入你自己的ControllerFactory並使用一些DI/IoC工具,你可以繞過這個限制。

+0

嗨,我的控制器有一個公共無參數的構造函數,有沒有其他解決方法呢? – Whyyy 2010-08-13 14:19:39

+0

你可以發佈你的控制器代碼嗎? – 2010-08-13 14:49:43

+0

發表於上面,謝謝 – Whyyy 2010-08-13 15:08:28

4

您的LogOnModel是否有無參數構造函數?它需要一個DefaultModelBinder來實例化它。另外,當你發佈異常時,請從異常對象中發佈完整的堆棧跟蹤,否則我們只是猜測錯誤實際發生的位置。

相關問題