我正在使用asp.net mvc2.I我有一个列表框和文本框,当我从列表框中选择一个项目时,该项目的相应值应出现在来自database.please help的文本框中
答案 0 :(得分:1)
您应该使用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
P.S。有人编辑/破坏我的ansver并且没有标记(
答案 1 :(得分:0)
你的问题有点模糊,但这基本上是如何做到的:
您可以使用jquery(或您喜欢的任何其他JS库)在更改事件中发布列表框的值。然后控制器返回一个值,然后将其放入文本框中。