10 votes

Aucun constructeur sans paramètre défini pour cet objet. dans ASP.NET MVC Controller

Je suis sûr que c'est assez simple, mais je suis un peu bloqué ici. Le routage défini pour mon application est simplement celui par défaut. J'ai défini le contrôleur suivant.

namespace Baynes.Wedding.Web.Controllers
{
    public class AdminController : Controller
    {
        private readonly IAuthProvider _authProvider;
        private readonly IDocumentRepository _documentRepository;

        public AdminController(IAuthProvider authProvider, IDocumentRepository documentRepository)
        {
            _authProvider = authProvider;
            _documentRepository = documentRepository;
        }

        public ViewResult EditDocument(int id)
        {
            var document = _documentRepository.Select(id);

            return View(new DocumentEditViewModel(document));
        }

        [HttpPost]
        public ActionResult EditDocument(DocumentEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                _documentRepository.Update(model.ToDocument());
                return RedirectToAction("ListDocuments");
            }

            return View();
        }
    }
}

Lorsque je navigue vers /Admin/EditDocument/1/ alors la première action s'exécute exactement comme prévu, rendant la vue suivante:-

<h2>@ViewBag.Title</h2>
@using (Html.BeginForm("EditDocument", "Admin", FormMethod.Post)) {
    @Html.ValidationSummary(true)
    @Html.HiddenFor(m => Model.Id)
    <div>
        @Html.LabelFor(m => Model.Title)
    </div>
    <div>
        @Html.TextBoxFor(m => Model.Title)
    </div>
    <div>
        @Html.LabelFor(m => Model.Body)
    </div>
    <div>
        @Html.TextAreaFor(m => Model.Body)
    </div>
    <div>
        @Html.LabelFor(m => Model.Url)
    </div>
    <div>
        @Html.TextBoxFor(m => Model.Url)
    </div>

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

En soumettant cette demande, j'obtiens une erreur : -.

No parameterless constructor defined for this object. Autres questions apparemment liées MVC : Aucun constructeur sans paramètre défini pour cet objet suggère que le conteneur IoC n'est pas correctement configuré, mais le fait que la première action s'exécute sans problème signifie sûrement que ce n'est pas le problème ici ?

Toute aide serait grandement appréciée.

Regards.

Simon

0voto

Jamaxack Points 1489

Si le niveau d'accessibilité du constructeur de DocumentEditViewModel est protégé, vous obtiendrez également la même erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X