2010-04-07 141 views
-1

我要做到以下几点:下拉列表中MVC

1:在register.aspx添加两个下拉列表[说ddlRole,ddlGender]

2:填充下拉列表[ddlRole应从数据库填充,ddlRole应该有两个静态字段]

3:在提交我想获得两个下拉列表中选定的值。

请帮忙。

在此先感谢。

+0

好吧,你试过什么?它是如何发展的? – 2010-04-07 20:07:56

+0

是的Mahesh,我已经尝试过了,我无法完全完成。这是我在这里发布这个问题的唯一原因。 再次感谢您的回复我从Andrey和scottgu那里得到了答案。 – Zerotoinfinity 2010-04-10 15:15:40

回答

7

那么,你的问题是“你能告诉我如何建立一个穿梭?”。但我会尽力向你展示一个小例子,它会帮助你(我真的希望)

首先,如果你想在页面上获得下拉菜单,你需要创建它。

就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应用程序。

祝你好运!

+3

“为我做作业/给我发送编码”问题的工作量非常大。 – Webjedi 2010-04-07 23:37:07

+1

我同意,但很有趣。我真的很想让人们更多地了解MVC – 2010-04-08 05:21:31

+0

这很棒,帮助了我很多。 同时我检查了Scottgu博客。 谢谢安德烈。 :) – Zerotoinfinity 2010-04-10 15:13:54