ASP.Net MVC3 Viewbag - установить выбранный индекс выпадающего списка

Я совершенно новичок в 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>

2 ответа

Решение

Вы делаете вещи трудным путем. В вашем контроллере сделайте это:

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

Я предполагаю, что у вас есть форма там. Установите ViewBag в коде действия контроллера после публикации формы.

Другие вопросы по тегам