2013-08-06 59 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;設置;}

,我的表格上工作

相關問題