如何将数据从模型绑定到ASP控制器?

时间:2013-01-29 14:34:25

标签: c# asp.net-mvc-3 sql-server-2008-r2

我正在为我的项目使用asp.net mvc3(C#)。我是新手。我有一个表,其中包含name,age,state_id等数据。现在我希望当我使用asp控件GRIDVIEW时,它应该将我的表的数据绑定到gridview以及2列作为编辑和视图。我怎么能通过MVC?我完全迷失了。

我再次有另外两张表

1)Country_Mastercountry_id,country_name

2)City_Masterstate_id,state_name

我希望当我在下拉列表中选择国家/地区时,其相应的状态列表应显示在另一个下拉列表中。

2 个答案:

答案 0 :(得分:1)

  

当我使用asp控件GRIDVIEW时,它应该将我的表的数据绑定到   gridview和2列作为编辑和视图。我该怎么办?   MVC?

我认为你误解了ASP.NET MVC中的一些基本概念。不再有任何服务器端控件,如GridView。在ASP.NET MVC中,不再有经典WebForms中使用的ViewState和PostBack模型。因此,您可能在WebForms中使用的服务器端控件都不能在ASP.NET MVC中工作。这是一种完全不同的Web开发方法。

在ASP.NET MVC中,您可以从定义一个用于保存数据的模型开始:

public class PersonViewModel
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Country { get; set; }
}

然后是一个控制器,它将与您的DAL通信并填充模型:

public class PersonController: Controller
{
    public ActionResult Index()
    {
        IEnumerable<PersonViewModel> model = ... talk to your DAL and populate the view model
        return View(model);
    }
}

最后你有一个相应的视图,你可以在其中显示这个模型的数据:

@model IEnumerable<PersonViewModel>
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Country</th>
        </tr>
    </thead>
    <tfoot>
    @foreach (var person in Model)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Age</td>
            <td>@person.Country</td>
        </tr>
    }
    </tfoot>
</table>

在ASP.NET MVC视图中,您还可以使用一些内置帮助程序。例如,有WebGrid helper允许您简化表格输出:

@model IEnumerable<PersonViewModel>
@{
    var grid = new WebGrid();
}

@grid.GetHtml(
    grid.Columns(
        grid.Column("Name"),
        grid.Column("Age"),
        grid.Column("Country")
    )
)

我建议您浏览一下有关ASP.NET MVC的getting started tutorials,以便更好地熟悉基本概念。

答案 1 :(得分:0)

对于gridview,您可以使用MvcContrib GridJQuery Grid for MVC