我正在使用MVC构建应用,此问题与days=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
daydict = dict((day[:3],day)for day in days)
页面和操作有关。
假设我的模型有2个小数属性以及其他属性,但对于此示例不是必需的:
Create
显然这些属性是不可为空的,因此在我的public class TestClass
{
public int ID { get; set; }
public decimal DecimalProperty { get; set; }
public decimal SecondDecimalProperty { get; set; }
// more properties below this, but deemed unnecessary for this question
}
视图中,它们在页面加载时显示为如此(忽略第二个文本框):
现在我的目标是清除那些文本框,所以它们只是空白..所以我用JS来实现它:
Create
我在这些输入字段上放了一个名为$(".clear-textbox").val("");
的类..完美地工作..但是现在我的clear-textbox
我有条件语句检查其他字段是否有效,如果没有返回对象..就像这样:
HttpPost Create Action
这会导致if (object.property== 0)
{
ModelState.AddModelError("property", "This field is required!");
return View(object);
}
视图重新显示用户已输入的值,以及需要更改的一个属性下面的错误消息..这就是问题所在。重新加载Create
视图后,Create
的脚本也是如此,导致clear-textbox
和DecimalProperty
为空文本框...而不是保留用户最初为他们输入。
所以我的问题是,除了使用javascript之外,还有另一种清除文本框中十进制属性的方法吗?
感谢任何帮助。
这是cshtml。
SecondDecimalProperty
答案 0 :(得分:1)
要么你必须通过Javascript加载,如下面的
function createButton(context, func){
var button = document.createElement("input");
button.type = "button";
button.value = "im a button";
button.onclick = func;
output.appendChild(button);
}
button.addEventListener("click",function(){
alert("did something");
});
OR
您可以创建自己的 MVC Html Helper ,根据您的特殊需求进行操作。如果您想要代码,请告诉我......
答案 1 :(得分:0)
您可以将默认值设置为文本框的data-
属性,并仅在匹配时将其清除。像:
$(".clear-textbox").each(function(){
var $this = $(this);
if( $this.val() == $this.data().defaultvalue ) $this.val('');
});
答案 2 :(得分:0)
如果不知道文本框的呈现方式,很难得出答案。但是,我假设您使用的是
@Html.TextBoxFor
或
@Html.EditorFor
有两种方法可以做到这一点。
public class TestClass
{
public int ID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public decimal DecimalProperty { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public decimal SecondDecimalProperty { get; set; }
}
@Html.EditorFor(model => model.DecimalProperty)
@Html.TextBoxFor(model => model.DecimalProperty, "{0:#.#}")