J'ai le marquage suivant: lorsque le taux code> Propriété est par exemple. 12.45 Dans la DB, le texte ci-dessus> textboxfor code> rend le numéro avec un séparateur de virgule et non la période que je veux. Puis-je faire quelque chose en dehors de la définition des paramètres de langue sur IIS? P> P>
3 Réponses :
Essayez ceci:
web.config: strong> em> p> Vous pouvez également appliquer ceci pour la vue Lorsque vous souhaitez forcer ce paramètre: P> public static class MyHelpers
{
//Custom HTML Helper method used for setting "class" and disabled attributes of MyDropdownlist
public class MySelectItem : SelectListItem
{
/* Since you are passing this data using ViewData, you don't have a limitation and
you can put anything there. I advise that you use ViewBag instead of ViewData. */
public string Class { get; set; }
public string Disabled { get; set; }
}
public static MvcHtmlString MyDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<MySelectItem> list, string optionLabel, object htmlAttributes)
{
return MyDropdownList(htmlHelper, ExpressionHelper.GetExpressionText(expression), list, optionLabel, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
public static MvcHtmlString MyDropdownList(this HtmlHelper htmlHelper, string name, IEnumerable<MySelectItem> list, string optionLabel, IDictionary<string, object> htmlAttributes)
{
TagBuilder dropdown = new TagBuilder("select");
dropdown.Attributes.Add("name", name);
dropdown.Attributes.Add("id", name);
StringBuilder options = new StringBuilder();
// Make optionLabel the first item that gets rendered.
if (optionLabel != null)
options = options.Append("<option value='" + String.Empty + "'>" + optionLabel + "</option>");
foreach (var item in list)
{
if(item.Disabled == "disabled")
options = options.Append("<option value='" + item.Value + "' class='" + item.Class + "' disabled='" + item.Disabled + "'>" + item.Text + "</option>");
else
options = options.Append("<option value='" + item.Value + "' class='" + item.Class + "'>" + item.Text + "</option>");
}
dropdown.InnerHtml = options.ToString();
dropdown.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return MvcHtmlString.Create(dropdown.ToString(TagRenderMode.Normal));
}
}
Utilisation de EN-US CODE> Culture Mesures avec d'autres paramètres que je veux laissé seul, comme le format de date.
Utiliser RegEx sera une option, si vous n'êtes pas intéressé par l'ingénierie.
Un exemple de code comme ci-dessous fonctionnerait. Je n'a pas testé le code fort>, c'est juste pour l'illustration. @Html.TextBoxFor(m => Regex.Replace(m.Items[i].Rate.ToString(), @",(?<=\d,)(?=\d)", "."), new { @class = "form-control text-center Rate", @readonly = Model.PreTenderLockedDown, title = "Rate" })
Si je fais un Tostring (cultureInfo.invariantculture) code> Je reçois la période que je veux comme séparateur décimal sans la complexité ou la surcharge de la regex.
Je pense que cela dépendrait de la culture du système d'exploitation par défaut. Corrige moi si je me trompe.
invariantCulture code> est juste que, invariant. Il a toujours les mêmes paramètres quelle que soit la culture du système d'exploitation.
Vous pouvez utiliser l'attribut "valeur" de textboxfor markup. ici "{0: 0. ###}" signifie qu'il affichera 3 chiffres sous des points décimaux. p> p>