Решение, если вы хотите повлиять на фактический элемент .ui.
.ui-state-active a, .ui-state-hover a {
outline: none;
}
В чем разница между ответом Анона и Константина Д.
Анон справедливо нацелился на фактический «тег» внутри «тега li». Всегда помните, что вкладки (); использует теги внутри несортированного списка. Чтобы на самом деле отображать вкладки навигации.
CSS также влияет на контур li: a теги
.ui-state-active a, .ui-state-hover a {
outline: none;
}
Запускает виджет вкладок пользовательского интерфейса jQuery
$('#my-tabs').tabs();
Разметка вкладок в HTML
<div id="my-tabs">
<ul>
<li><a href="#tab-1">Tab 1</a></li>
<li><a href="#tab-2">Tab 1</a></li>
</ul>
<div id="tab-1"></div>
<div id="tab-2"></div>
</div>
Кажется, всегда можно найти обходные пути в той или иной форме, чтобы сделать стандартную привязку модели по умолчанию! Интересно, можно ли создать «псевдо» свойство, которое используется только связывателем модели? (Обратите внимание, это ни в коем случае не изящно. Мне кажется, что я прибегаю к подобным уловкам все чаще и чаще просто потому, что они работают и выполняют свою работу ...) Также обратите внимание, если вы использовали отдельный "ViewModel" (который я рекомендую для этого), вы можете поместить туда этот код и оставить свою модель предметной области красивой и чистой.
public class Employee
{
private decimal _Salary;
public string MvcSalary // yes, a string. Bind your form values to this!
{
get { return _Salary.ToString(); }
set
{
// (Using some pseudo-code here in this pseudo-property!)
if (AppearsToBeValidDecimal(value)) {
_Salary = StripCommas(value);
}
}
}
public decimal Salary
{
get { return _Salary; }
set { _Salary = value; }
}
}
PS, после того, как я напечатал это, я оглядываюсь на это сейчас и даже не решаюсь опубликуйте это, это так некрасиво! Но если вы думаете, что это может быть полезно, я позволю вам решить ...
Удачи!
-Майк
Причина в том, что в ConvertSimpleType в ValueProviderResult.cs используется TypeConverter.
TypeConverter для десятичного числа не поддерживает разделитель тысяч. Об этом читайте здесь: http://social.msdn.microsoft.com/forums/en-US/clr/thread/1c444dac-5d08-487d-9369-666d1b21706e
Пока не проверял, но на в том сообщении они даже сказали, что CultureInfo, переданный в TypeConverter, не используется. Он всегда будет неизменным.
string decValue = "1,400.23";
TypeConverter converter = TypeDescriptor.GetConverter(typeof(decimal));
object convertedValue = converter.ConvertFrom(null /* context */, CultureInfo.InvariantCulture, decValue);
Так что я думаю, вам нужно использовать обходной путь. Неприятно ...
Эй, у меня возникла еще одна мысль ... Это основано на ответе Навида, но по-прежнему позволит вам использовать привязку модели по умолчанию. Идея состоит в том, чтобы перехватить опубликованную форму, изменить некоторые из значений в ней, а затем передать коллекцию [измененных] форм методу UpdateModel (привязка модели по умолчанию) ... Я использую модифицированную версию для , имеющую дело с checkboxes / booleans , чтобы избежать ситуации, когда что-либо, кроме «true» или «false», вызывает необработанное / тихое исключение в связывателе модели.
(Вы, конечно, захотите реорганизовать это, чтобы оно было более ре- все десятичные дроби)
public ActionResult myAction(NameValueCollection nvc)
{
Employee employee = new Employee();
string salary = nvc.Get("Salary");
if (AppearsToBeValidDecimal(salary)) {
nvc.Remove("Salary");
nvc.Add("Salary", StripCommas(salary));
}
if (TryUpdateModel(employee, nvc)) {
// ...
}
}
PS, я могу запутаться в моих методах NVC, но я думаю, что они будут работать.
Вы пытались преобразовать его в десятичный формат в контроллере? Это должно помочь:
string _val = "1,000.00"; Десятичный _decVal = Convert.ToDecimal (_val); Console.WriteLine (_decVal.ToString ());
Мне не понравились приведенные выше решения, и я пришел к следующему:
В моем настраиваемом привязке моделей я в основном заменяю значение инвариантным значением языка и региональных параметров, если оно десятичное, а затем по остальной части работы в привязку модели по умолчанию. Мне кажется странным, что rawvalue является массивом, но это то, что я видел / украл в исходном коде.
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if(bindingContext.ModelType == typeof(decimal) || bindingContext.ModelType==typeof(Nullable<decimal>))
{
ValueProviderResult valueProviderResult = bindingContext.ValueProvider[bindingContext.ModelName];
if (valueProviderResult != null)
{
decimal result;
var array = valueProviderResult.RawValue as Array;
object value;
if (array != null && array.Length > 0)
{
value = array.GetValue(0);
if (decimal.TryParse(value.ToString(), out result))
{
string val = result.ToString(CultureInfo.InvariantCulture.NumberFormat);
array.SetValue(val, 0);
}
}
}
}
return base.BindModel(controllerContext, bindingContext);
}