System.MissingMethodException: для этого объекта не определен конструктор без параметров - PullRequest
1 голос
/ 13 августа 2010

Я использую MVC 2.0 с Html.ListBoxFor, как показано ниже:

<% 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);
    }
}

Ответы [ 2 ]

4 голосов
/ 13 августа 2010

Есть ли в вашем LogOnModel конструктор без параметров? Это нужно для DefaultModelBinder, чтобы создать его экземпляр. Кроме того, когда вы публикуете исключение, отправьте полную трассировку стека из объекта исключения, иначе мы просто угадываем, где на самом деле произошла ошибка.

0 голосов
/ 13 августа 2010

Эта ошибка исходит от ControllerFactory, а не от View. Это говорит о том, что у вас нет беспараметрического конструктора в вашем контроллере. DefaultControllerFactory для ASP.NET MVC может создавать экземпляры Controller только с открытым параметром без конструктора. Если вы подключаете свою собственную ControllerFactory и используете какой-либо инструмент DI / IoC, вы можете обойти это ограничение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...