我在 asp.net MVC 中创建我的第一个站点,并且我有一个非常初学者的问题。我已经看到,在控制器中,我们正在返回我们想要在页面中显示的操作视图 [我可以看到网站中的大多数示例它们只显示页面中的内容]。如果我必须加载 3 个下拉列表、2 个表格、2 个单选按钮等怎么办?在页面上加载这些控件的最佳做法和正确方法是什么?
2 回答
克里斯
听起来您希望像在 ASP.Net Web 窗体中那样使用控件。但是,对于 MVC,视图由标准 HTML 组成。您提到的控件可以只是输入选择等。您可以在视图中使用各种帮助程序类和方法来帮助您呈现所需的 HTML - 特别是查看 Razor 语法。
我先看几个例子,它应该更清楚......这是一个很好的例子:http: //www.nerddinner.com/(源代码在这里http://nerddinner.codeplex.com/ ) 也许也可以从亚马逊上买几本书。
高温高压
菲尔
您通常看到的示例使用 MVC 的脚手架,它创建了一个非常简单的 Controller/Actions/Views 来操作某个 Model 类。但是您可以自由地在页面中显示您想要的任何内容。这是有关如何显示下拉列表的示例。
首先创建一个对象,该对象将包含您要在页面上显示的所有内容:
public class GameDetailsViewModel
{
public Game Game { get; set; }
public SelectList Players { get; set; }
}
注意SelectList
. 它将用作DropDownList
.
然后Action
填充这个对象:
public ViewResult Details(int id)
{
GameDetailsViewModel viewModel = new GameDetailsViewModel();
viewModel.Game = db.Games.Single(g => g.ID == id);
IEnumerable<Player> players = db.Players();
viewModel.Players = new SelectList(players, "ID", "FullName");
return View(viewModel);
}
注意View()
方法的重载,它使用我们创建的对象来打包我们在页面上需要的东西。
然后在 View 上,你可以使用一个 HtmlHelper 来渲染一个 DropDownList:
@using (Html.BeginForm("signup", "games", FormMethod.Post))
{
@Html.DropDownList("playerID", Model.Players, "Select...", null)
<input type="submit" value="Sign up" />
}
这是一个非常简单的示例,但是您可以扩展它以将您想要的任何内容发送到 View,然后使用普通的旧 HTML 或方便的HtmlHelpers呈现它。