我有一个模特:
public class studentmodel
{
public int id { get; set; }
public string name { get; set; }
}
我填充我的下拉列表:
// GET: dropdown/Test
public ActionResult Index()
{
List<SelectListItem> list = new List<SelectListItem>();
{
list.Add(new SelectListItem { Text = "saurav", Value = "1"});
list.Add(new SelectListItem {Text = "Rj", Value = "2" });
list.Add(new SelectListItem {Text = "rahul", Value = "3" });
ViewBag.studentlist = list;
}
return View();
}
[HttpPost]
public ActionResult Index(studentmodel s)
{
return View();
}
我有一个控制器动作,即回发:
@using (Html.BeginForm("Index", "Test", FormMethod.Post))
{
@Html.DropDownListFor(m => m.name, (IEnumerable<SelectListItem>)ViewBag.studentlist, "select student");
<div>
<input type="submit" value="submit" />
</div>
<div> you have selected : @ViewBag.selected </div>
}
如何从下拉列表中获取文字?感谢
答案 0 :(得分:0)
您需要使用客户端javascript,因为更改会在浏览器中发生。
首先更改标记以将选区包装在一个范围内。
<div> you have selected : <span id="selectedItem">@ViewBag.selected</span> </div>
如果你的GET操作没有真正设置任何内容,请从上面一行删除@ViewBag.selected
。
现在是剧本
$(function(){
$("#name").change(function(){
var selected = $(this).find("option:selected").text();
$("#selectedItem").text(selected);
});
});
这将读取所选选项的文本并在我们的范围内设置。
如果您希望在HttpPost操作中使用此文本,则可以向视图模型添加新属性
public class studentmodel
{
public int id { get; set; }
public string name { get; set; }
public string SelectedText{ get; set; }
}
并在表单中保留一个隐藏字段
@Html.HiddenFor(s=>s.SelectedText)
现在,使用javascript设置此值的隐藏字段的值。
$(function(){
$("#name").change(function(){
var selected = $(this).find("option:selected").text();
//var selected = $("#name option:selected").text(); // another option
$("#selectedItem").text(selected);
$("#SelectedText").val(selected);
});
});
现在,当您提交表单时,隐藏字段SelectedText
的值也会被提交。
答案 1 :(得分:0)
模型添加一个viewmodel,如下所示
public class studentmodel
{
public int id { get; set; }
public string name { get; set; }
}
public class SomeViewModel
{
public string studentname {get; set;}
public SelectList studentlist {get; set;}
}
<强>更新强>
public ActionResult Index()
{
SomeViewModel Model = new SomeViewModel();
var studentlist = new List<SelectListItem>();
studentlist.Add(new SelectListItem() { Value = "1", Text = "saurav" });
studentlist.Add(new SelectListItem() { Value = "2", Text = "Rj" });
studentlist.Add(new SelectListItem() { Value = "3", Text = "rahul" });
Model.studentlist = new SelectList(studentlist, nameof(SelectListItem.Value), nameof(SelectListItem.Text));
return View(Model);
}
[HttpPost]
public ActionResult Index(SomeViewModel s)
{
return View();
}
并按以下方式更改您的观看次数
<强>更新强>
@model somenamespace.SomeViewModel
@Html.DropDownListFor(m => m.studentname , Model.studentlist , "select student");