2

はい、ASP.NETMVCではViewModelsを使用する必要があることを知っています。しかし、私は無数のViewModelクラスを書くのにうんざりしています。さらに、検証モデルをビューに渡すだけでなく、ViewModel全体を渡す必要があるため、次のような醜いコードを取得します。

Html.TextBoxFor(m => m.TopicModel.Title)

それ以外の

Html.TextBoxFor(m => m.Title)

@instance_variables新しいクラスを作成せずに、必要なすべての変数を渡すだけのRoRが大好きです。

どうやってやるの?C#4の機能も含めて、すべてを試したので不可能だと思いますdynamic

何か案は?

4

2 に答える 2

3

ViewDataディクショナリを使用できます。

public ActionResult DoSomething()
{
    ViewData["Message"] = "Hello World";
    return View();
}

アクセス者:

<%= ViewData["Message"] %>

ダイナミックの使用に切り替えることもできます。

<%@ Page Inherits="ViewPage<dynamic>" %>

私はそれがあなたにできるはずだと思います:

public ActionResult DoSomething()
{
    return View(new { Message = "Hello" });
}

アクセス者:

<%= Model.Message %>

ダイナミクスはコンパイル時ではなく実行時に解決されるため、ビューで匿名オブジェクトをスローできるようにする必要があります。

于 2010-08-24T06:46:27.287 に答える
0

ビューモデルを使用したくない場合は、ドメインモデル自体を渡すことができます。なぜだめですか?

<%@ Page Inherits="ViewPage<TopicModel>" %>

Html.TextBoxFor(m => m.Title)
于 2010-08-24T07:23:13.303 に答える