0

モデル プロパティが 10 進数の場合、@Html.DisplayFor がブラウザーで値をレンダリングしないという問題があります。double 型が正しく表示されることに注意してください。もう1つの奇妙なことは、コードを本番サーバーに昇格させるとdoが表示されることです...したがって、これは私のローカルラップトップの問題です。

これが私がテストしているモデルです:

    public decimal Test { get { return (decimal)105.35;} }
    public decimal? TestNullable { get { return (decimal)105.35; } }
    public double TestDbl { get { return 105.35; } }
    public double? TestNullableDbl { get { return 105.35; } }

マークアップは次のとおりです。

@Html.DisplayFor(model => model.Test)
<br />
@Html.DisplayFor(model => model.TestNullable)
<br />
@Html.DisplayFor(model => model.TestDbl)
<br />
@Html.DisplayFor(model => model.TestNullableDbl)

そして、これがhtmlでレンダリングされるものです:

            <br>

            <br>
            105.35
            <br>
            105.35

二重に表示されることに注意してください

4

1 に答える 1

0

新しい MVC 4 プロジェクトを最初からテスト用に作成したところ、問題を再現できませんでした。これを考えると、ローカル構成に何か問題があるに違いありません (アセンブリとサーバーにインストールされているものとの不一致、decimal という名前の表示テンプレート、decimal という名前のクラス、詳細情報がないと本当に不明です)

VS 2013、.NET 4.5、Windows 8.1 64 ビットを使用

モデルを見る

public class TestViewModel
{
    public decimal Test { get { return (decimal)105.35; } }
    public decimal? TestNullable { get { return (decimal)105.35; } }
    public double TestDbl { get { return 105.35; } }
    public double? TestNullableDbl { get { return 105.35; } }
}

コントローラ

public class HomeController : Controller
{
    //
    // GET: /Home/

        public ActionResult Index()
        {
            return View(new TestViewModel());
        }

    }

意見

@model MvcApplication1.Models.TestViewModel

@{
    ViewBag.Title = "Home";
}

<h2>Home</h2>
@Html.DisplayFor(model => model.Test)
<br />
@Html.DisplayFor(model => model.TestNullable)
<br />
@Html.DisplayFor(model => model.TestDbl)
<br />
@Html.DisplayFor(model => model.TestNullableDbl)

結果の HTML

<body>


<h2>Home</h2>
105.35
<br />
105.35
<br />
105.35
<br />
105.35

    <script src="/Scripts/jquery-1.8.2.js"></script>


</body>
于 2013-11-14T03:45:58.820 に答える