c# MVC Dropdownlist post 选定值
c# MVC Dropdownlist post selected value
首先让我这样说:我已经看过多个答案,但我似乎无法理解它 - 可能是我脑残了。但我的问题是:
我的问题专门针对下拉列表:使用硬编码值:今天、月份、年份。
每当我 select 下拉列表中的内容时,我想 post/submit 值,例如 "today" 到控制器。我该怎么做?
感谢您的宝贵时间。
@using (Html.BeginForm("DisplayDetails", "Client"))
{
@*Start of searchBox*@
<div id="searchBox">
Enter client e-mail: <input id="txtUser" type="text" name="clientID" /> <input id="btnFind" type="submit" />
</div>
@*<--- End of searchBox --->*@
if (Model != null)
{
@*Start of infobox and wrapper*@
<div id="infoBoxWrapper">
<div class="infoBox">
<fieldset>
<legend style="padding: 0.2em 0.5em; border: 1px solid black; font-size: large;"> Client info </legend>
<table>
<tr>
<td> <b> First name: </b></td>
<td>
@Html.DisplayFor(m => m.FName)
</td>
</tr>
<tr>
<td> <b> Last name: </b></td>
<td> @Html.DisplayFor(m => m.LName) </td>
</tr>
<tr>
<td> <b> Phone: </b></td>
<td> @Html.DisplayFor(m => m.Phone)</td>
</tr>
<tr>
<td> <b> E-mail: </b></td>
<td> @Html.DisplayFor(m => m.UserID) </td>
</tr>
</table>
</fieldset>
</div>
@*<--- End of infobox --->*@
@*Start of recordsBox*@
<div id="recordsBox">
<fieldset>
<legend style="padding: 0.2em 0.5em; border: 1px solid black; font-size: large;"> Records </legend>
<table>
<tr>
<td> <b>Time</b></td>
<td> <b>Systolic</b> </td>
<td> <b>Diastolic</b> </td>
<td> <b>Pulse</b> </td>
</tr>
@for (int i = 0; i < Model.Records.Count; i++)
{
string style = null;
if (Model.Records[i].Score == 1) { style = "background-color:green"; }
else if (Model.Records[i].Score == 2) { style = "background-color:blue"; }
else if (Model.Records[i].Score == 3) { style = "background-color:yellow"; }
else if (Model.Records[i].Score == 4) { style = "background-color:orange"; }
else if (Model.Records[i].Score == 5) { style = "background-color:red"; }
<tr style="@style">
<td>
@Model.Records[i].Time
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Systolic)
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Diastolic)
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Pulse)
</td>
</tr>
}
</table>
</fieldset>
</div>
</div>
@*<--- End of infobox wrapper --->*@
@*Start of chartbox*@
<div id="chartWrapper">
<div id="comboBox">
<select id="dpChoice">
<option value="today">Today</option>
<option value="month">This month</option>
<option value="year">This year</option>
</select>
</div>
<div id="chartbox">
@Model.Chart
</div>
</div>
@*<--- End of chartbox --->*@
}
else
{
<label> Search for a client...</label>
}
}
您的 select 没有 name
属性,因此不会在表单数据中发送。将其更改为(例如)
<select name="choice">
...
</select>
并且取决于第一个选项是否被 select 编辑,它将 post 返回 choice: today
,您可以通过将参数 string choice
添加到 POST 来访问它] 方法。但是我强烈建议您使用包含
的视图模型
public class MyViewModel
{
public int ClientEmail{ get; set; }
public string Choice { get; set; }
public IEnumerable<SelectListItem> ChoiceList { get; set; }
....
}
并在控制器中填充集合
model.ChoiceList = new List<SelectListItem>()
{
new SelectListItem(){ Value = "today", Text = "Today" },
new SelectListItem(){ Value = "month", Text = "This month" },
}
然后在视图中
@Html.TextBoxFor(m => m.ClientEmail)
....
@Html.DropDownListFor(m => m.Choice, Model.ChoiceList)
然后post将视图模型返回给控制器
首先让我这样说:我已经看过多个答案,但我似乎无法理解它 - 可能是我脑残了。但我的问题是:
我的问题专门针对下拉列表:使用硬编码值:今天、月份、年份。
每当我 select 下拉列表中的内容时,我想 post/submit 值,例如 "today" 到控制器。我该怎么做?
感谢您的宝贵时间。
@using (Html.BeginForm("DisplayDetails", "Client"))
{
@*Start of searchBox*@
<div id="searchBox">
Enter client e-mail: <input id="txtUser" type="text" name="clientID" /> <input id="btnFind" type="submit" />
</div>
@*<--- End of searchBox --->*@
if (Model != null)
{
@*Start of infobox and wrapper*@
<div id="infoBoxWrapper">
<div class="infoBox">
<fieldset>
<legend style="padding: 0.2em 0.5em; border: 1px solid black; font-size: large;"> Client info </legend>
<table>
<tr>
<td> <b> First name: </b></td>
<td>
@Html.DisplayFor(m => m.FName)
</td>
</tr>
<tr>
<td> <b> Last name: </b></td>
<td> @Html.DisplayFor(m => m.LName) </td>
</tr>
<tr>
<td> <b> Phone: </b></td>
<td> @Html.DisplayFor(m => m.Phone)</td>
</tr>
<tr>
<td> <b> E-mail: </b></td>
<td> @Html.DisplayFor(m => m.UserID) </td>
</tr>
</table>
</fieldset>
</div>
@*<--- End of infobox --->*@
@*Start of recordsBox*@
<div id="recordsBox">
<fieldset>
<legend style="padding: 0.2em 0.5em; border: 1px solid black; font-size: large;"> Records </legend>
<table>
<tr>
<td> <b>Time</b></td>
<td> <b>Systolic</b> </td>
<td> <b>Diastolic</b> </td>
<td> <b>Pulse</b> </td>
</tr>
@for (int i = 0; i < Model.Records.Count; i++)
{
string style = null;
if (Model.Records[i].Score == 1) { style = "background-color:green"; }
else if (Model.Records[i].Score == 2) { style = "background-color:blue"; }
else if (Model.Records[i].Score == 3) { style = "background-color:yellow"; }
else if (Model.Records[i].Score == 4) { style = "background-color:orange"; }
else if (Model.Records[i].Score == 5) { style = "background-color:red"; }
<tr style="@style">
<td>
@Model.Records[i].Time
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Systolic)
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Diastolic)
</td>
<td>
@Html.DisplayFor(m => m.Records[i].Pulse)
</td>
</tr>
}
</table>
</fieldset>
</div>
</div>
@*<--- End of infobox wrapper --->*@
@*Start of chartbox*@
<div id="chartWrapper">
<div id="comboBox">
<select id="dpChoice">
<option value="today">Today</option>
<option value="month">This month</option>
<option value="year">This year</option>
</select>
</div>
<div id="chartbox">
@Model.Chart
</div>
</div>
@*<--- End of chartbox --->*@
}
else
{
<label> Search for a client...</label>
}
}
您的 select 没有 name
属性,因此不会在表单数据中发送。将其更改为(例如)
<select name="choice">
...
</select>
并且取决于第一个选项是否被 select 编辑,它将 post 返回 choice: today
,您可以通过将参数 string choice
添加到 POST 来访问它] 方法。但是我强烈建议您使用包含
public class MyViewModel
{
public int ClientEmail{ get; set; }
public string Choice { get; set; }
public IEnumerable<SelectListItem> ChoiceList { get; set; }
....
}
并在控制器中填充集合
model.ChoiceList = new List<SelectListItem>()
{
new SelectListItem(){ Value = "today", Text = "Today" },
new SelectListItem(){ Value = "month", Text = "This month" },
}
然后在视图中
@Html.TextBoxFor(m => m.ClientEmail)
....
@Html.DropDownListFor(m => m.Choice, Model.ChoiceList)
然后post将视图模型返回给控制器