2010-04-22 5 views
0

Je fais un modèle personnalisé dans mon application MVC, quelque chose comme ceci:argument UIHint dans ASP.NET MVC 2.0?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<input type="text" id="date" /> 

Et dans mon POCO je me réfère à ce fichier ascx comme celui-ci.

[UIHint("DatePicker")] 
    public DateTime CreatedOn { get; set;} 

Je me demandais comment puis-je envoyer un paramètre dans ce UIHint que je peux mettre dans le UIHint comme ceci:

[UIHint("DatePicker",null,"name","ThisIsTheNameValue")] 
    public DateTime CreatedOn { get; set;} 

Et le récupérer dans le fichier ascx pour mettre fin à ceci:

<input type="text" name="ThisIsTheNameValue" id="date" /> 

Merci pour votre temps.

Répondre

1

L'attribut UIHint n'a aucune propriété que vous pouvez utiliser pour cela, et la classe ModelMetadata ne possède aucune propriété applicable. La seule suggestion que j'ai serait d'utiliser une extension HtmlHelper pour créer l'entrée et laisser le nom de la propriété sur le modèle. Cela ne vous donne pas tout à fait le contrôle que vous voulez, mais c'est assez simple. Si cela ne suffit pas, vous pouvez l'implémenter via une extension HtmlHelper<T> qui vous permettrait d'utiliser un attribut personnalisé pour définir le nom et construire l'entrée vous-même à l'aide d'un TagBuilder plutôt que d'utiliser le moteur de modèle.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%= Html.TextBox(string.Empty, Model, new { id = "date" } %> 
Questions connexes