Question

Je voudrais envoyer un délégué ou d'un objet de commande comme argument à un EditorFor ainsi que l'objet modèle. Je pourrais utiliser vidéotex pour l'envoyer avec, mais je voudrais bien qu'il fortement typé . Y at-il moyen raisonnable de le faire?

est à peu près ce que je voudrais être en mesure de le faire dans un modèle d'éditeur:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Pair<MyModelType, TheDelegate>>" %>

Mais comment pourrais-je ajouter mon délégué à une expression comme celle-ci?

<%= Html.EditorFor(m => m.MyModelTypeField, "ThatEditor") %>
Était-ce utile?

La solution

Vous ne pouvez pas faire cela d'une manière fortement typé, sauf si vous modifiez votre modèle de vue et que le contrôleur passe les informations nécessaires. Donc,

public class MyModelTypeWithDelegate
{
    public MyModelType MyModelType { get; set; }
    public TheDelegate MyModelTypeDelegate { get; set; }
}

public class MyViewModel
{
    public MyModelTypeWithDelegate MyModelTypeWithDelegate { get; set; }
}

et

<%= Html.EditorFor(m => m.MyModelTypeWithDelegate, "ThatEditor") %>

L'autre possibilité est de passer comme vidéotex supplémentaires, mais il ne sera pas fortement typé:

<%= Html.EditorFor(m => m.MyModelTypeField, "ThatEditor", new { TheDelegate = someDelegate }) %>

et puis à l'intérieur de votre modèle d'éditeur:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyModelType>" %>
<%
    var del = (TheDelegate)ViewData["TheDelegate"];
%>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top