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