Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何从dropdownlistfor获取所选文本_Asp.net Mvc_Model View Controller - Fatal编程技术网

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");