Mon modèle hérite d'une interface:Modèle ASP.NET Binder et le type de base
public interface IGrid
{
ISearchExpression Search { get; set; }
.
.
}
public interface ISearchExpression
{
IRelationPredicateBucket Get();
}
Le modèle:
public class Project : IGrid
{
public ISearchExpression Search { get; set; }
public Project()
{
this.Search = new ProjectSearch();
}
}
Le ProjectSearch:
public class ProjectSearch: ISearchExpression
{
public string Name { get; set; }
public string Number { get; set; }
public IRelationPredicateBucket Get()
{...}
}
Et la forte PartialView typée dans la vue principale:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ProjectSearch>" %>
<%= Html.TextBoxFor(x=>x.Name)%>
<%= Html.TextBoxFor(x => x.Number)%>
....
Lorsque je soumets le formulaire, la propriété Search
n'est pas liée correctement. Tout est vide. L'action prend un argument de type ProjectSearch
.
Pourquoi le Search
n'est pas lié comme supposé?
EDIT
L'action
public virtual ActionResult List(Project gridModel)
{..}
J'ai essayé dans les deux sens, niether travaillé. Je pense que cela a quelque chose à voir avec le type de base de la propriété Search. Son ISearchExpression. Peut-être que pendant que la liaison est en cours, la recherche est de type ISearchExpression, par conséquent le classeur modèle ne peut pas voir la propriété Name. Fait ce sens? – user137348
Pouvez-vous afficher le code de l'action à laquelle vous envoyez des messages? –
J'ai édité le post et j'ai ajouté le code d'action. – user137348