1

これを行うためにオンラインで見つけた手順に従いましたが、機能していないようです。これは、Razor2 を使用した MVC4 プロジェクトです。

これが私が作成したメタデータクラスです

public class LedgerItemValidation
{
    [DisplayFormat(DataFormatString = "{0:#,##0.00#}", ApplyFormatInEditMode = true)]
    public decimal Amount { get; set; }

    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime StartDate { get; set; }
}

そして、ここに私が作成した部分クラスがあるので、これらを適用できます

[MetadataType(typeof(LedgerItemValidation))]
public partial class LedgerItem
{
    ... other stuff
}

そして、これが私がページに表示する場所です

@model CF.Models.LedgerItem

@Html.TextBoxFor(m => m.Amount)

私がオンラインで見ることができるものから、これは私がしなければならないすべてであるべきです. 私がテストしたとき、私はそれに DisplayName も与えましたが、それも表示されませんでした。

ここで何が欠けているのかわかりません。

4

2 に答える 2

1

のみがまたはDisplayFormatに適用されます。使用するEditorForDisplayFor

@Html.EditorFor(m => m.Amount)
于 2013-01-03T15:54:49.970 に答える
0

以下のような部分クラスを使用してこれを行うことができます。

  1. Linq to SQL が生成するオブジェクト クラスは部分的です

  2. オブジェクトの独自の部分クラスを作成する

  3. [MetadataType(typeof(YourDataAnnotationIncludedClassName))]作成した部分クラスに配置します。

サンプルコード:

Linq to SQL 生成クラス

public partial class Provider 
{
   public string Name { get; set; }
}

検証する各フィールドの Metadata を使用して、独自の MetaData クラスを作成します

public class MyMetaDataProviderClass
{
    [Required]
    [DisplayName("Provider Name")]
    public string Name { get; set; }
}

メタデータを追加する Object クラス用に別の部分クラスを作成します。ここでは Provider クラスです。

[MetadataType(typeof(MyMetaDataProviderClass))]
public partial class Provider { }

重要な注意:クラスで何も指定する必要はありません。メタデータ タイプだけを指定します。

次に、以下のようなビューでこれを使用できます。

@Html.TextBoxFor(m => m.Name)

編集

小数の問題については、以下のように処理できます。

@Html.TextBox(m => Math.Round(m.Amount,2))

また

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

日付の問題:

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

追記:

DisplayFormat は、EditorFor および DisplayFor ヘルパーでのみ機能します

これがお役に立てば幸いです。

于 2013-01-03T12:51:20.560 に答える