我有一个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
答案 0 :(得分:2)
可能有很多不同的方法可以解决这个问题,但有一种方法是使用Request Form集合和name属性。
在表单中创建隐藏属性。
<input type="hidden" id="AddressName" name="AddressName" />
创建一个类似这样的脚本
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
}
在select标签中添加一个onchange事件,该事件调用创建的函数并传递id。
onchange="SetSelectedText(this)"
在控制器中现在应该可以使用
访问选项的文本string textFromOption = Request.Form["AddressName"];
希望这会有所帮助。 / 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");