我目前正在开发一个 ASP.NET MVC 3 项目。我制作了一个自定义编辑器模板来显示百分比。这是我到目前为止的代码。
public class MyClass
{
// The datatype can be decimal or double
[Percentage]
public double MyPercentage { get; set; }
}
[Percentage] 属性是使用以下代码的普通 UI 提示属性:
@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))
用户可以通过在文本框中输入值再次添加该值。这可能是什么?任何帮助或建议将不胜感激。
谢谢