0

私はMVCがまったく初めてです。コントロールの選択したインデックスを含む Viewbag を作成したいと思います。.ascx ファイル内で設定できますか? または、この情報を取得するための最良の方法は何ですか?

<select id="accounttype" style="float: left;" autocomplete="off">
                <% 
                    if (Request.Url.AbsolutePath.ToUpper().StartsWith("/COMMERCIAL")) //Commercial
                    {
                %>
                <option value="C" selected="selected">eManager+</option>
                <option value="C">Retirement Plans</option>
                <option value="C">Brokerage Accounts</option>
                <%
                    }
                    else if (Request.Url.AbsolutePath.ToUpper().StartsWith("/BUSINESS")) //Business
                    {
                %>
                <option value="B" selected="selected">eManager+</option>
                <option value="B">Business Credit Card</option>
                <option value="B">Retirement Plans</option>
                <option value="B">Brokerage Accounts</option>
                <%
                    }
                    else //Personal, root or other
                    {
                %>
                <option value="P" selected="selected">Online Banking</option>
                <option value="P">Health Savings Account</option>
                <option value="P">Paychek Plus!&reg;</option>
                <option value="P">Gift Cards</option>
                <option value="P">Business Tax Manager</option>
                <option value="P">Business Card Manager</option>
                <option value="P">Business Credit Card</option>
                <%
                    }
                %>
            </select>
4

2 に答える 2

0

そこにフォームがあるとします。フォームを投稿した後、コントローラのアクション コードで ViewBag を設定します。

于 2011-10-26T20:25:57.207 に答える
0

あなたは物事を難しい方法でやっています。コントローラーでこれを行います:

if (Request.Url.AbsolutePath.ToUpper().StartsWith("/COMMERCIAL")) //Commercial 
{ 
    ViewBag.ListContents = new SelectList(new[] {new {name = "eManager+", value="C"},
       {name = "Retirement Plans", value="C"},
       {name = "Brokerage Accounts", value="C"}}, "value", "name");
}
// similar for your other if statements as well

ViewBag.DropDownID = selectedvalue;

return View();

それからあなたの見解では

<% Html.DropDownListFor(m => m.DropDownID, ViewBag.ListContents); %>

ただし、問題は、同じ値を持つエントリが複数あるため、コードで最初のエントリしか選択できないことです。それぞれに固有の値を与えてから、ポストで各カテゴリの値を決定することをお勧めします。

たとえば、その値を「C1」「C2」「C3」に設定すると、文字列が C ではなく C で始まるかどうかを確認できます。

于 2011-10-26T20:45:44.837 に答える