我正在使用 asp.net mvc2。当我从列表框中选择一个项目时,我有一个列表框和文本框,该项目对应的值应该出现在数据库的文本框中。请帮助
最佳答案
您应该使用 JavaScript 来处理列表框选择更改。
阅读有关 Ajax 的内容,它需要在不重新加载页面的情况下从数据库中获取数据。
添加
示例如何处理列表框选择更改。
@Html.ListBox("nam",new SelectList(new string[]{"opt1","opt2"}),new {onchange = "javaScript:actch()", id = "namid"})
<script type="text/javascript">
function actch() {
alert(document.getElementById("namid").value);
}
</script>
值“document.getElementById("namid").value”包含您选择的选项。
您应该将此值发送到服务器并接收请求
@Html.ListBox("nam",new SelectList(new string[]{"opt1","opt2"}),new {onchange = "javaScript:actch()", id = "namid"})
<script type="text/javascript">
function actch() {
$.ajax({
url: "your url",
type: "POST",
data: "id = " + document.getElementById("namid").value,
success: function (data) {
// action on success
document.getElementById("TextBoxId").value = data;
},
error: function (jqXhr, textStatus, errorThrown) {
// action on fail
},
complete: function () {
}
});
}
</script>
你必须写一个服务器请求部分,并配置ajax。 (我用过 jQuery)
新增:服务器请求部分(示例)
[HttpPost]
public MvcHtmlString Detail(string id)
{
var d = _db.GetVehicle(Convert.ToInt32(id));
var sb = new StringBuilder();
sb.AppendLine(string.Format("Type: {0}</br>", d.Type));
sb.AppendLine(string.Format("Brand: {0}</br>", d.Brand));
sb.AppendLine(string.Format("Model: {0}</br>", d.Model));
sb.AppendLine(string.Format("Number: {0}</br>", d.Number));
sb.AppendLine(string.Format("Year: {0}</br>", d.Year));
sb.AppendLine(string.Format("Cost: {0}</br>", d.Cost));
return new MvcHtmlString(sb.ToString());
}
URL 看起来像:MyController/Detail/
ajax 的数据:"id="+ document.getElementById("namid").value
附言有人编辑/破坏了我的答案并且没有标记(
关于c# - asp.net mvc2 根据列表框值从数据库中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160454/