在asp.net mvc中的html.dropdownlist onchange上填写html.textbox

时间:2010-07-16 17:38:53

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

我是asp.net mvc的新手......&需要帮助我的下面的问题:

当表单加载时,我的国家/地区下拉列表中有一些值。我想当用户从下拉列表中选择一个值时,它应该返回到控制器并调用数据库以根据所选的Country检索CountryCode值。如何模拟该回发电话?

先谢谢

Deepthi

3 个答案:

答案 0 :(得分:1)

与ASP.NET MVC中的经典WebForms相反,没有PostBack这样的概念。首先,您需要一个能够代表您的数据的模型:

public class MyViewModel
{
    public string SelectedCountry { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }
}

然后你需要一个定义两个动作的控制器:一个用于渲染表单,另一个用于处理提交:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            // you probably would fetch those from the database
            Countries = new SelectList(new[] 
            {
                new { Value = "FR", Text = "France" },
                new { Value = "US", Text = "USA" } 
            }, "Value", "Text")
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(string selectedCountry)
    {
        // selectedCountry will contain the code that you could use to 
        // query your database
        return RedirectToAction("index");
    }
}

最后,您可能会向包含标记的模型抛出强类型视图:

<% using (Html.BeginForm()) { %>
    <%: Html.DropDownListFor(x => x.SelectedCountry, Model.Countries) %>
    <input type="submit" name="OK" />
<% } %>

如果这对你没有任何意义,我建议你reading the getting started tutorials

答案 1 :(得分:0)

答案 2 :(得分:-1)

您需要在asp下拉列表中设置AutoPostBack =“true”。您的控件还需要设置OnSelectedIndexChanged =“SomeFunction”。每当下拉列表中的索引发生更改时,这将调用代码隐藏中的函数。这是一个例子

<asp:DropDownList ID="dropDownID" runat="server" AutoPostBack="true" OnSelectedIndexChanged="OnDropdownIndex_Change"> </asp:DropDownList>