2013-08-06 56 views
0

我有一个有趣的问题,我没有找到原因。 在asp.net MVC应用程序中,我有一个表格可以保存一些简单的信息。除一个字段外,所有字段都可以整齐地存储。此字段(字符串)返回验证错误“Int32字段必须是数字”,但前提是文本中的句子包含单个数字号码。例如,如果句子如下: “一些包含数字3的简单句子”我会得到一个验证错误 - “Int32字段必须是数字”,如果该句子转换为:验证错误 - 字段Int32必须是一个数字 - 在字符串属性

“包含数字30的一些简单的句子”或“一些简单的句子包含了30%” - 没有错误

字段属性从一个模型:

[Display(Name = "Some name")] 
    [StringLength(500, ErrorMessage = "You can enter up to 500 characters.")] 
    public string Akcija { get; set; } 

下一页到现场我有一个(串)字段具有相同的属性特征,并且工作正常。从图

剪辑:

<div> 

      @Html.TextAreaFor(m => m.Akcija, new { style = "width:500px; height:100px;" }) 
      @Html.ValidationMessageFor(m => m.Akcija) 

     </div> 

它不能简单得多,但问题是在这里。

你有什么建议吗?

编辑:

如果我一直在试图挽救它会被保存到数据库中,无论验证错误的变化。在我看来,这是一个JavaScript验证错误或错误

编辑2 - 生成的HTML:

  <textarea cols="20" data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="Akcija" name="Akcija" rows="2" style="width:500px; height:100px;"> 

网络aplikacije我siteovi 3 SA 30%sniženja

我不知道在哪里它来自 - 此属性“data-val-number =”Int32字段必须是一个数字。 '“和”data-val-required =“需要Int32字段'' 我不在代码中施加这些规则

+2

您可以发布genertaed HTML – Satpal

+0

你确定你使用的是正确的模式? –

+0

您可以仔细检查页面是否绑定了正确的模型(其中Akcija是一个字符串),并且与字符串Akcija关联的已编译代码已部署? – Mayo

回答

0

一旦有人遇到这个问题,解决方法是使用Html.EditorFor如何如下:

第一:添加验证属性[数据类型(DataType.MultilineText)建模财产 让模型看起来财产像这样:

[Display(Name = "Some name")] 
    [StringLength(500, ErrorMessage = "You can enter up to 500 characters.")] 
    [DataType(DataType.MultilineText)] 
    public string Akcija { get; set; } 

其次:为Html.EditorFor制作模板。 在文件夹中创建模板Views/Shared/EditorTemplates - 如果没有文件夹EditorTemplates,则创建它。

在文件夹EditorTemplates中创建一个以模型属性名称命名的部分视图。 在我的情况下它是:akcija。CSHTML

这种观点认为应提交的模型属性的值,你必须包含定义的视场中的HTML,这样的模板,在我的情况,看起来就像这样:

@model System.String 

@if(!string.IsNullOrEmpty(Model)) 
{ 
    <textarea name="Akcija" style="width:500px;height:100px;">@Model.ToString() </textarea> 
} 
else 
{ 
<textarea name="Akcija" style="width:500px;height:100px;">@Model</textarea> 
} 

三在您的View中,更改Html.EditorFor中的Html.TextAreaFor并将其引用到您的模板中。 Html.EditorFor,在我的情况下,现在看起来像这样:

<div> 
    @Html.EditorFor(m => m.Akcija, "akcija") 
    @Html.ValidationMessageFor(m => m.Akcija) 
</div> 

就是这样,问题解决了。

注意:当命名模板和模板中的对象以及它自己的模板时,请注意命名约定。请注意,我的模板以小写字母命名,而在html模板中,html对象没有id属性。

我希望这可以帮助别人

0

尝试使用[DataType(DataType.MultilineText)]标记属性。也许这会明确帮助TextAreaFor

+0

没有变化,仍然不能正常工作 – boris

+0

我想我将不得不使用Html.EditorFor与[DataType(DataType.MultilineText)]并为“Akcija”为什么它很容易,当它可以是复杂的:)。谢谢大家的帮助和你的时间 – boris

+0

嗯,如何使用一个'TextBoxFor'助手结合属性'[DataType(DataType.MultilineText)]'像这里的解决方案http://stackoverflow.com/questions/4927003/asp-net-mvc3-textarea -with-html-editorfor – asymptoticFault

0

使用可为空的int/Int32。

public int? mobilequantity {get;组; }

or

public Int32? mobilequantity {get;设置;}

,我的表格上工作

相关问题