Asp.net下拉列表从选项中获取文本而不是值

时间:2015-10-12 12:55:23

标签: asp.net

我有一个ASP.NET MVC5应用程序,其中我有一个表单,用户必须选择一个选项 在提交之前的下拉列表中(对控制器中的方法进行Ajax调用)。

提交时,我希望能够访问选项的TEXT,而不是Controller中的值。 这怎么可能?

这就是View中的代码:

<select name="adressID" id=" adressID ">
          <option>Choose Adress</option>
           @foreach (var address in @Model.Address)
                    {
                        <option value="@address.ID">@Html.Raw(address.Name)</option>
                    }
</select>

/ ELC

3 个答案:

答案 0 :(得分:2)

可能有很多不同的方法可以解决这个问题,但有一种方法是使用Request Form集合和name属性。

  1. 在表单中创建隐藏属性。

    <input type="hidden" id="AddressName" name="AddressName" />
    
  2. 创建一个类似这样的脚本

    function SetSelectedText(addressID) //function with parameter that takes in the ID of the dropdownlist
     {
       var selectedText = addressPageId.options[addressPageId.selectedIndex].innerHTML; //Looks up the innerHTML of the option, based on the selectedIndex
       document.getElementById("AddressName").value = selectedText; //Sets the hidden property to the text retrieved from innerHTML above
     }
    
  3. 在select标签中添加一个onchange事件,该事件调用创建的函数并传递id。

    onchange="SetSelectedText(this)"
    
  4. 在控制器中现在应该可以使用

    访问选项的文本
    string textFromOption = Request.Form["AddressName"];
    
  5. 希望这会有所帮助。 / ChrisRun

答案 1 :(得分:0)

使用表单提交的任何内容(按钮单击事件?)来获取所选选项的文本值,并将其与其余发布的数据一起传递。以下是通过jQuery实现的方法:

$('#submit').on('click', function(){
    var selectedText = $('#addressID option:selected').text();
    // pass with other values
    ...
});

答案 2 :(得分:0)

如果您使用的是Razor,为什么不使用以下内容?

@Html.DropDownList("AddressName", null, htmlAttributes: new { @class = "form-control" })

然后在你的控制器上使用GET:

ViewBag.AddressName= new SelectList(db.Address, "Name", "Name");