В настоящее время я работаю над проектом ASP.NET MVC 3. Я сделал собственный шаблон редактора для отображения процентов. Вот код, который у меня есть до сих пор.
public class MyClass
{
// The datatype can be decimal or double
[Percentage]
public double MyPercentage { get; set; }
}
Атрибут [Percentage] — это обычный атрибут UI Hint, в котором используется следующий код:
@model Object
@{
string fieldName = ViewData.TemplateInfo.HtmlFieldPrefix;
}
<div style="height: 24px;">
<div style="float: left;">
@Html.TextBox("", String.Format("{0:0.00}", Model), new
{
id = "txt" + fieldName,
@Class = "magnaNumericTextBox",
type = "magnaNumericType",
style = "width:230px"
})
%
</div>
<div style="float: left;">
<ul style="height: 24px; list-style: none; padding: 0px; margin: 0px; line-height: none;">
<li style="line-height: normal"><a id="btn@(fieldName)Up" class="magnaNumericButton button small">
˄</a> </li>
<li style="line-height: normal"><a id="btn@(fieldName)Down" class="magnaNumericButton button small">
˅</a> </li>
</ul>
</div>
</div>
<script type="text/javascript">
$("#btn@(fieldName)Up").click(function ()
{
ChangeNumericUpDownValue($('#txt@(fieldName)'), 1);
return false;
});
$("#btn@(fieldName)Down").click(function ()
{
ChangeNumericUpDownValue($('#txt@(fieldName)'), -1);
return false;
});
$('#txt@(fieldName)').keypress(function (e)
{
NumericUpDownKeyPress($(this), e);
return false;
});
</script>
В этом шаблоне редактора используется числовой ролик вверх-вниз, который пользователь может использовать по своему усмотрению. Пользователь также может просто ввести число самостоятельно, не используя числовую функцию вверх-вниз. Функциональность javascript и все работало отлично до вчерашнего дня.
Теперь проблема заключается в том, что текстовое поле в шаблоне редактора не позволяет пользователю вводить свое собственное значение (что делает его доступным только для чтения, хотя в отображаемом html нет атрибута только для чтения), только с помощью цифровых кнопок вверх вниз. Я определил, что если я удалю атрибуты html из помощника текстового поля следующим образом:
@Html.TextBox("", String.Format("{0:0.00}", Model))
Что пользователь может еще раз добавить значение, введя его в текстовое поле. Что это может быть? Любая помощь или совет будут оценены.
Спасибо
ViewData.TemplateInfo.HtmlFieldPrefix
– это ПРЕФИКС поля (например, [Car.Window.‹-- HtmlPrefix]Color). Если вам нужен идентификатор или имя, вы должны использовать@Html.NameForModel
и@Html.IdForModel
в шаблоне. - person Ivan Zlatev   schedule 07.03.2012