Asp.net mvc 如何从dropdownlistfor获取所选文本
我有一个模型:Asp.net mvc 如何从dropdownlistfor获取所选文本,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,我有一个模型: public class studentmodel { public int id { get; set; } public string name { get; set; } } 我填充我的下拉列表: // GET: dropdown/Test public ActionResult Index() { List<Se
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>
}
如何从下拉列表中获取文本?谢谢在浏览器发生更改时,您需要使用客户端javascript 首先稍微更改标记,将选择内容包装在一个范围内
<div> you have selected : <span id="selectedItem">@ViewBag.selected</span> </div>
这将读取所选选项的文本,并将其设置在我们的范围内
如果希望在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的值。模型添加一个视图模型,如下所示
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;}
}
更新
我只寻找c,没有任何其他javascript代码。当更改事件发生在客户端时,您需要js。您没有在studentmodel中调用someviewmodel,然后查看它,它不会调用model.studentlist,然后还必须在控制器中进行更改,该控制器的id=1,它不会,它将id=1,并且我希望回发非常详细,基本上我们是这样的只调用一个类,它是我们的视图模型SomeViewModel我们将所有数据绑定到SomeViewModel,并将此mdoel传递给view and on post方法有一个viewmodel参数,因此基本上我们只使用一个viewmodel在razor中,您还必须在razor html的顶部添加此viewmodel@model.SomeViewModelstudentlistin razor调用@model.someviewmodel并将model.studentlist添加为selectlist输出是验证模型名称,而不是我们想要的实际名称。当Model.studentlist出现错误时,该错误在重新构建后消失,现在输出是dropdownlist中的somenamespace.Model
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");