2013-10-02 65 views
1

我有以下问题。在我的数据库中,我有一个类型为“float”的属性。当我使用Entity Framework创建模型时,相同的属性由“double”字段表示。双向null发布到控制器

这是事情。在视图中,如果我写例如“23,22”数据注释说它不是一个数字,并且如果我写“23.22”通过验证,但当它到达控制器时该属性的值为空。

任何想法为什么会发生?我一直在寻找信息,但没有用。

在此先感谢!

编辑:我添加了我使用该属性的代码。

在模型类是这样的:

public class TestObject{ 

     .... 
     public Nullable<double> attribute { get; set; } 
     .... 
     } 

在视图:

 @Html.EditorFor(m => m.attribute) 

和Controller:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Test(TestObject test) 
    { 
    .... 
     return View(); 
    } 

如果我写了 “23.22”,当我访问控制器中的属性值时,它是空的。

+1

你可以发布你的模型,操作方法和视图吗?我们将能够帮助您进一步诊断此问题。 – mattytommo

+0

看起来很好,它必须是提到的代码之外的问题。你能发布完整的模型/视图吗? – mattytommo

+0

我不知道'attribute'这个名字是否可能有一些特殊的含义,这会让模型绑定器感到困惑。只是踢踢尝试将属性的名称改为别的。 – asymptoticFault

回答

1

作为一种可接受的解决方案,您可以更改jQuery文化以允许逗号分隔符代替点。在这种情况下,double将被正确传递。

//For example German culture uses comma. Just add this line: 

    <script> 
    Globalize.culture("de-DE"); 
    </script> 
+0

答案本身没有帮助,但由于“全球化”,我开始研究这个问题,并且找到了一种可行的方法。谢谢。 – Rodrigo

+1

@罗德里戈有同样的问题。这个方法是什么? –