2011-07-06 13 views
0

の名前を指定します。次のコードは、なぜ私が疑問に思ってドロップダウンリストのasp.net mvc3カミソリ

<select style="display: none;" size="10" name="CollectionCategory.Classification.Nationality.NationalityId" id="CollectionCategory_Classification_Nationality_NationalityId" class="pickList"> 

は、関数のシグネチャは、必ず次のようになります。ここで

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, object htmlAttributes); 

これは、親ビューのビューモデルで上書き名パラメータGOTSのように思えます。 (これは部分的な見解です)。これは誰にも意味がありますか?

答えて

0

CollectionCategoryというナビゲーションプロパティの場合は、このヘルパーをエディタテンプレート内または部分的に呼び出すためです。これは完全に正常な動作であり、バインド時にコントローラのアクションに適切な値が送信されるようにします。あなたは規則に従うことをしたくない場合はもちろん

@Html.DropDownListFor(
    x => x.Classification.Nationality.NationalityId, 
    Model.Nationalities, 
    new { 
     @size = 10, 
     @style = "display:none;", 
     @class = "pickList" 
    } 
) 

(ノーアイデアなぜあなたではないだろう)しかし、あなた:また、私はそれらのリファクタリング無愛想な魔法の文字列を避けるために、このヘルパーの強く型付けされたバージョンを使用して、あなたをお勧めしますあなたのPOSTアクションでバインディングプレフィックスを指定できます:

[HttpPost] 
public ActionResult Foo([Bind(Prefix = "CollectionCategory")] ClassificationViewModel model) 
{ 
    ... 
} 
+0

私はこれらの行に沿って始めました。問題は、これがjavascript機能を持つ再利用されたコンポーネントであるという事実にあります。そのため、コンポーネントのIDはクライアントサイドスクリプトにとって重要です。私は "ModelPrefix"のようなビューモデル、またはこれを処理するためのプロパティを持つことができました。あなたはなぜこれが起こっているのかについて私の質問に答えました。ありがとう。 – voam

関連する問題