1

次のコードは/Courses/Detailアクションにあります。

    [AcceptVerbs("GET")]
    public ActionResult Detail(int id)
    {
        ViewData["Title"] = "A View Title";
        return View(tmdc.GetCourseById(id));
    }

このtmdc.GetCourseById(id)メソッドはCourse、View の型のインスタンスを返します。私が使用しているビューで

<%= HTML.TextBox("Title")%>

Titleオブジェクトのプロパティの値を表示しCourseます。代わりに、テキスト ボックスに文字列が表示されますA View Title。これは正常/予期される動作ですか? これを処理する最良の方法は何ですか?

更新
回避策として、私はに変更ViewData["Title"]しましViewData["VIEW_TITLE"]たが、この衝突を処理するため、またはこれが期待される結果であるかどうかを知るためのよりクリーンな方法が必要です。

4

2 に答える 2

1

残念ながら、私は今開発マシンにいないので、これをテストすることはできませんが、このようなことを試しましたか?

<%= Html.TextBox("Title", ViewData.Model.Title) %>
于 2008-09-22T16:56:32.687 に答える
1

はい、その動作は設計どおりです。その意図は、モデル タイプのインスタンスのプロパティとして実際に割り当てることができない無効なユーザー入力を (ビューで) 表示できるようにすることです。この機能の詳細については、このブログ投稿をご覧ください。

回避策は問題ありませんが、混雑したビューの名前空間の問題を強調しています。モデルと ViewData のプロパティに加えて、TempData、ModelState、および HTML も含まれていることに注意してください。

モデル プロパティ "Title" を常に表示したい場合は、プロパティ名の代わりにリテラル値を受け入れる HTML.TextBox オーバーロードの 1 つを使用することをお勧めします。

于 2008-09-22T17:02:01.970 に答える