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!®</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 в коде действия контроллера после публикации формы.