asp.net mvc2根据列表框值从数据库中选择值

时间:2011-08-23 11:41:04

标签: c# asp.net-mvc asp.net-mvc-2

我正在使用asp.net mvc2.I我有一个列表框和文本框,当我从列表框中选择一个项目时,该项目的相应值应出现在来自database.please help的文本框中

2 个答案:

答案 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库)在更改事件中发布列表框的值。然后控制器返回一个值,然后将其放入文本框中。

查看http://api.jquery.com/jQuery.post/