0

検証にモデルを使用するのが好き

<!-- ViewPage -->

<%@ Page Language="C#" Inherits="ViewPage<TopicModel>" %>

...

<%= Html.TextBoxFor(m => m.Title) %>

...

<%= Html.TextBoxFor(m => m.Description) %>


// Controller

[HttpPost]
public ActionResult NewTopic(TopicModel model)
{
     // validate
}

うまく機能しますが、追加のデータを渡す必要がある場合は、新しい ViewModel クラスを作成する必要があり、柔軟性が失われます。

<!-- ViewPage -->

<%@ Page Language="C#" Inherits="ViewPage<TopicViewModel>" %>

<%= Model.SomethingImportant %>

...

<%= Html.TextBoxFor(m => m.TopicModel.Title) %> // UGLY, I get name="TopicViewModel.TopicModel.Title"

...

<%= Html.TextBoxFor(m => m.TopicModel.Description) %> // UGLY, same thing


// Controller

[HttpPost]
public ActionResult NewTopic(TopicViewModel model)
{
     // validate
     var validationModel = model.TopicModel; // UGLY
}

どうすれば見やすく、見栄えがよくなりますか?

4

2 に答える 2

1

モデル外の追加データに ViewData ディクショナリを使用することを検討しましたか?

更新または、ビュー モデルをモデルのサブクラスにして、追加のプロパティを追加しますが、基本クラスの検証は保持します。

于 2010-08-24T07:28:01.907 に答える
1

あなたが醜く見えると言うあなたの2番目の例は、実際にはViewDataを使用するよりも優れた方法です。

モデルの考え方は、ビューがレンダリングするときにビューが必要とする「もの」が含まれているということです。そのため、ビューが必要とするすべてのデータ項目を配置するのに最適な場所です。

命名規則 (フレームワークがフォーム ポストからモデルを再設定するために使用する規則) に本当に腹を立てている場合は、モデルをフラット化できます。これにより、各アイテムに「きれいな」名前が付けられますが、理由もなく大変な作業になります。

于 2010-08-24T07:41:20.843 に答える