1

ASP.NET MVCでの複雑なモデルのバインドに関して同様の質問が寄せられていることは知っていますが、POSTに返される十分なプレフィックスがないためにバインドに問題があり、簡単な解決策があるかどうか疑問に思いました。

私は次のようなビューモデルを持っています:

public class ViewModel<Survey, Contact>
{
    public Survey Model { get; set; }
    public Contact Model2 { get; set; }
}

次に、POSTされたものを受け入れるこのようなアクションメソッドがあります

public ActionResult Survey(
    string id, string id2, SurveyViewModel<Survey, Contact> model)
{
    // code goes here...
}

私のフォームでは、最初の2つのIDはURLルートからのものであり、次の@Html.EditorFor(x => x.Model.SurveyName)ような名前で生成されたフォームコード(を使用または同様のもの)があります。

<input class="text-box single-line" id="Model_Email"
       name="Model.Email" type="text" value="" />

Model.Email名前をからに変更すると投稿は機能model.Model.Emailしますが、カスタムモデルバインダーを作成する必要がないようにしています。

ある

  1. @Html.EditorFor型付きビ​​ューヘルパーを使用してビューにレンダリングされるすべてのフィールドの名前を変更するためにビューに設定できますか?
  2. アクションのBind属性を使用して変更できるもので、そのオブジェクトへのデフォルトのバインドが可能になりますか?

答えは「カスタムバインダーを作成する」かもしれませんが、私はそれを噛む前に質問をしたかっただけです。

助けてくれてありがとう。よろしくお願いします、

ハル

4

1 に答える 1

2

カスタムHtmlFieldPrefixを使用してカスタムviewdataをビューに渡すことができます。ヘルパーでレンダリングされたすべてのコントロールには、そのプレフィックスが付いています。

ViewData.TemplateInfo.HtmlFieldPrefix = "prefix here";

これを見てください:EditorForに、ビュー上の入力アイテムの前にクラス名を付けるように強制しますか?

于 2013-01-10T18:02:24.773 に答える