我要做到以下几点:下拉列表中MVC
1:在register.aspx添加两个下拉列表[说ddlRole,ddlGender]
2:填充下拉列表[ddlRole应从数据库填充,ddlRole应该有两个静态字段]
3:在提交我想获得两个下拉列表中选定的值。
请帮忙。
在此先感谢。
我要做到以下几点:下拉列表中MVC
1:在register.aspx添加两个下拉列表[说ddlRole,ddlGender]
2:填充下拉列表[ddlRole应从数据库填充,ddlRole应该有两个静态字段]
3:在提交我想获得两个下拉列表中选定的值。
请帮忙。
在此先感谢。
那么,你的问题是“你能告诉我如何建立一个穿梭?”。但我会尽力向你展示一个小例子,它会帮助你(我真的希望)
首先,如果你想在页面上获得下拉菜单,你需要创建它。
就MVC而言,您需要创建一个View。 这一观点MVC风格的aspx页面
下面是一个例子:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<h2>Register</h2>
这是一个普通的空白页面。
让我们填写下拉菜单。
<h2>Register</h2>
<%= Html.DropDownList("ddlRole") %>
<%= Html.DropDownList("ddlGender") %>
好的。现在,让系统显示我们的视图。 要做到这一点,我们需要一台电机。就MVC而言,它称之为Controller。
与方法创建一个类:
public class SetupController : Controller
{
public ActionResult Register()
{
return View();
}
}
如果现在将尝试启动,你应该看到两个下拉列表的页面。 不幸的是,它们将是空的。 显然他们是空的,因为你没有告诉如何填补他们。
控制器的主要目的是连接包含所有应该处理和显示的数据的模型。换句话说,控制器从模型(M)获取数据,准备好并发送到视图(V)。
所以,首先我们需要调整我们的控制器,所以它会告诉视图关于下拉内容的信息。 最简单的方法是使用的ViewData集合:
public ActionResult Register()
{
ViewData["ddlRole"] = new[] {
new SelectListItem() {Text = "Customer", Value = "Customer"},
new SelectListItem() {Text = "Supervisor", Value = "Supervisor"},
new SelectListItem() {Text = "Admin", Value = "Admin"},
};
ViewData["ddlGender"] = new[]{
new SelectListItem() {Text = "Male", Value = "Male"},
new SelectListItem() {Text = "Female", Value = "Female"}
};
return View();
}
你可以从这个例子,我创建了动态下拉式菜单内容见。 在你的情况下,你可以使用你的数据库来填充下拉,只要你想。
如果您现在尝试打开您的页面,您会看到您的下拉列表中现在填充了数据!
太棒了!
如果你问,视图如何知道下拉使用什么内容,我会回答MVC使用了很多约定。其中一个约定是,当View生成其控件时,通过与该控件的名称相同的键(即“ddlRole”,“ddlGender”)来查找该控件的内容。 由于您将值ViewData的关键,MVC很容易用文本填充你的下拉菜单!
酷!
往前走。
现在,我们需要从页面收集数据并将其发送回服务器。
我们需要什么?
当然,首先我们需要一个提交按钮:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<h2>Register</h2>
<%= Html.DropDownList("ddlRole") %>
<%= Html.DropDownList("ddlGender") %>
<input type="submit" value="Register Me" />
公开赛在broser页面一次。 酷!我们有按钮,但是,如果我们尝试点击它,什么都不会发生。
如果您在经典ASP.NET的角度思考,你会告诉我们忘了提交指定的按钮的事件,写代码隐藏代码和BLA ... bla..bla ...
在MVC中它有点不同。我们只需要将内容发送到服务器。 要做到这一点,通常你应该有你的页面上的“格式”标签:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<% using (Html.BeginForm("DoRegister", null)) { %>
<h2>Register</h2>
<%= Html.DropDownList("ddlRole") %>
<%= Html.DropDownList("ddlGender") %>
<input type="submit" value="Register Me" />
<% } %>
使用此代码块将只是包装我们的标记有开始和结束“形式”的标签。 这使得浏览器从窗体内的所有输入(在我们的例子中是它的下拉列表)中收集信息,并将它们从它们被打开的位置发回。
尝试在浏览器中打开它,然后单击按钮
哎呀,我们得到了一个例外。原因是我们忘记了规则。 我们打算做什么?我们希望将数据发送到我们的商业模式。 谁应该对此负责?当然,这应该是一个控制器(C),因为它的模型(M)和查看(V)之间的主要和唯一的连接器
让新动作加入到同一个控制器:
public ActionResult DoRegister(string ddlRole, string ddlGender)
{
////store our ddlRole and ddlGender in the database
/// ......
/// .....
return RedirectToAction("Welcome");
}
在这例如,一旦注册完成,它会重定向到“欢迎”操作。
要完成一个例子并避免错误,我们需要实现欢迎的行动和观点:
一下添加到控制器:
public ActionResult Welcome()
{
return View();
}
,并为欢迎行动新的视图(右击“欢迎光临”的代码,并选择“添加视图...”):
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<h2>Welcome!</h2>
现在你会看到,一旦你点击按钮,它会告诉你欢迎动作执行的结果 - Welc ome页面。
最后一招 - 让我们将选定的下拉值发送到欢迎页面。
要做到这一点,我们首先需要将这些值存储在从服务器获取该值的时刻。 在你的情况,你可以使用数据库,而是使之更简单,我将使用特殊的TempData集合:
public ActionResult DoRegister(string ddlRole, string ddlGender)
{
////store our ddlRole and ddlGender in the database
/// ......
/// .....
TempData["SelectedRole"] = ddlRole;
TempData["SelectedGender"] = ddlGender;
return RedirectToAction("Welcome");
}
接下来,就让让我们欢迎页面显示来自TempData集合中的值:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<h2>Welcome you, the <%= TempData["SelectedRole"]%> of <%= TempData["SelectedGender"] %>!</h2>
运行它! 你看到了值吗? 是的,你做到了!
简单和容易。
我希望这篇文章能帮助你开始认识ASP.NET MVC是多么伟大。 但上面的代码只是冰山的顶部。其实MVC比这更有趣得多。
如果您对获取更多知识感兴趣,我会推荐您阅读Steven Sanderson的“ASP.NET MVC框架”。 真的很棒的书,包含了一切,开始在MVC上编写自己的MVC应用程序。
祝你好运!
“为我做作业/给我发送编码”问题的工作量非常大。 – Webjedi 2010-04-07 23:37:07
我同意,但很有趣。我真的很想让人们更多地了解MVC – 2010-04-08 05:21:31
这很棒,帮助了我很多。 同时我检查了Scottgu博客。 谢谢安德烈。 :) – Zerotoinfinity 2010-04-10 15:13:54
好吧,你试过什么?它是如何发展的? – 2010-04-07 20:07:56
是的Mahesh,我已经尝试过了,我无法完全完成。这是我在这里发布这个问题的唯一原因。 再次感谢您的回复我从Andrey和scottgu那里得到了答案。 – Zerotoinfinity 2010-04-10 15:15:40