2016-12-02 3 views
0

私はいくつかのASP.NET MVCコードをいじりてきたと、私はビューでHTMLヘルパーを経由してDropDownListコントロールを作成しようとしているが、私は試してみて、別途SelectListのを作成し、DropDownListのにオブジェクト参照を渡しますコードを実行すると表示されません。ラベルの横に空白の領域として表示されます。ところで、私はDropDownListForメソッドをよく知っていますが、なぜこれが機能しないのか不思議です。私のHTML DropDownListで作成されたSelectListが表示されない問題は何ですか?

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary() 
    <p>Your name: @Html.TextBoxFor(x => x.Name) </p> 
    <p>Your email: @Html.TextBoxFor(x => x.Email)</p> 
    <p>Your phone: @Html.TextBoxFor(x => x.Phone)</p> 
    <p>Test: @Html.TextBox("Test")</p> 
    <p>Test2: 
     @{ List<SelectListItem> a = new List<SelectListItem>(); 
      a.Add(new SelectListItem() { Text = "Jake", Value = "Jake" }); 
      a.Add(new SelectListItem() { Text = "Sam", Value = "Sam" }); 
      IEnumerable<SelectListItem> b = new SelectList(a); 
      Html.DropDownList("Test2", b, "Choose a name"); 
     } 
    </p> 

これは、それが

RSVPForm in browser

答えて

0

どのように見えるかをあなたが完全にSelectListのを省略することができ、かつDropDownListニーズへの呼び出しがで先行する '@'

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary() 
    <p>Your name: @Html.TextBoxFor(x => x.Name) </p> 
    <p>Your email: @Html.TextBoxFor(x => x.Email)</p> 
    <p>Your phone: @Html.TextBoxFor(x => x.Phone)</p> 
    @*<p>Phone: @Html.TextAreaFor(x => x.WillAttend)</p>*@ 
    <p>Test: @Html.TextBox("Test")</p> 
    <p>Test2: 
     @{ List<SelectListItem> a = new List<SelectListItem>(); 
      a.Add(new SelectListItem() { Text = "Jake", Value = "Jake" }); 
      a.Add(new SelectListItem() { Text = "Sam", Value = "Sam" }); 

      //string c = (string)b.SelectedValue; 
     } 
     @Html.DropDownList("Test2", a, "Choose a name"); 
    </p> 
} 
+0

があります@を前に付ける必要がある理由は?私はそれが剃刀のブロックであったとしてもDropDownListへの呼び出しにそれを適用すると思っていました....私は実際にC#コードブロックの概念をかみそりに適用することはできないと思います... – Jake

+0

'DropDownList'の呼び出しは、 'IHtmlString'型の変数です。以前のコードでは、関数を呼び出していましたが、戻り値は使用していませんでした。 '@'はページに挿入することを意味します。 –

+0

興味深い。ありがとう。 – Jake

関連する問題