2011-02-03 1 views
0

J'ai donc cette zone de texte sur la page:TextBoxFor l'extension HtmlHelper

<%= Html.TextBox("EffectiveDate", Model.EffectiveDate.HasValue ? Model.EffectiveDate.Value.ToString("dd-MMM-yyyy") : "", new { @class = "economicTextBox", propertyName = "EffectiveDate", onchange = "parseAndSetDt(this); ", dataType = "Date" })%> 

stocke et affiche une date à l'aide d'un sélecteur de date. Fondamentalement, en fonction de l'autorisation des utilisateurs, je veux que cette zone de texte soit désactivée/activée. C'est bien, je peux le faire déjà, cependant, je veux faire la valeur textbox = date actuelle SI ils ne sont pas autorisés à changer la valeur. Je peux utiliser cette extension HTML pour le désactiver w/autorisations:

public static MvcHtmlString TextBoxWithPermission(this HtmlHelper htmlHelper, 
                string name, 
                object value, 
                string[] permissions, 
                object htmlAttributes) 
{ 
    foreach (string permission in permissions) 
    { 
     if (Chatham.Web.UI.Extranet.SessionManager.DisplayUser.IsInRole(permission)) 
     { 
      // the user has the permission => render the textbox 
      return htmlHelper.TextBox(name, value, htmlAttributes); 
     } 
    } 

    // the user has no permission => render a readonly checkbox 
    var mergedHtmlAttributes = new RouteValueDictionary(htmlAttributes); 
    mergedHtmlAttributes["disabled"] = "disabled"; 
    return htmlHelper.TextBox(name, value, mergedHtmlAttributes); 
} 

Mais comment puis-je le remplir avec la date actuelle si elle est désactivé?

Répondre

1

Si je lis bien, vous voulez simplement passer la date actuelle comme valeur dans le cas d'absence d'autorisations, au lieu de la valeur transmise à TextBoxWithPermission?

// the user has no permission => render a readonly checkbox 
var mergedHtmlAttributes = new RouteValueDictionary(htmlAttributes); 
mergedHtmlAttributes["disabled"] = "disabled"; 
return htmlHelper.TextBox(name, DateTime.Now, mergedHtmlAttributes);