5

私はmvc.netWebアプリケーションに取り組んでおり、モデルの生成にEntityFrameworkを使用しています。doubleである属性を含むクラスがあります。私の問題は@HTML.EditorFor(model => model.Double_attribute)、アプリケーションを使用してテストするときに、そのエディターでdoubleを入力できず、整数しか入力できないことです。(ビューにRazorエンジンを使用しています)これを解決するにはどうすればよいですか?ありがとう。

更新:この形式のdoubleを入力できることを発見しました#、###(コンマの後に3つの数字がありますが、ユーザーに特定の形式を入力させたくないので、すべての形式を受け入れたい(1つ以上の数字の後にカンマ)これを解決する方法を誰かが知っていますか?よろしく

4

2 に答える 2

2

追加表記を使用できます:

[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Double_attribute{ get; set; }

そして今...出来上がり:ビューでダブルを使用できます:

@Html.EditorFor(x => x.Double_attribute)

他の形式については、これを確認するか、このフィールドに必要なオプションをグーグルで「DataFormatString double」にすることができます。

于 2012-09-07T11:01:52.693 に答える
0

カスタムデータバインダーを使用してみてください:

public class DoubleModelBinder : IModelBinder
{
    public object BindModel( ControllerContext controllerContext,
        ModelBindingContext bindingContext )
    {
        var valueResult = bindingContext.ValueProvider.GetValue( bindingContext.ModelName );
        var modelState = new ModelState { Value = valueResult };
        object actualValue = null;

        try
        {
            actualValue = Convert.ToDouble( valueResult.AttemptedValue,
                CultureInfo.InvariantCulture );
        }
        catch ( FormatException e )
        {
            modelState.Errors.Add( e );
        }

        bindingContext.ModelState.Add( bindingContext.ModelName, modelState );
        return actualValue;
    }
}

バインダーを global.asax に登録します。

protected void Application_Start ()
{
    ...
    ModelBinders.Binders.Add( typeof( double ), new DoubleModelBinder() );
}
于 2012-09-04T05:43:35.047 に答える