如何在MVC中进行Web用户控制?

时间:2012-03-26 13:14:27

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

通过阅读Scottgu articles

,我轻松实现了网络用户控制

BUT;我的用户控件返回给我错误:

ERROR

CountryDropDown.ascx:


<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%=ViewData["countries"] = new string[] { "France", "Germany", "US", "UK" })%>
<%var q = ViewData["countries"]; %>
<%= Html.DropDownList("",ViewData["countries"] as SelectList)%>

MYVİEW:&lt;%= Html.EditorFor(c =&gt; c.Country,“CountryDropDown”)%&gt;

模特:

   public class Customer
{
    [Required(ErrorMessage="NameRequired")]
    [StringLength(50,ErrorMessage="Must be less than 50")]
    public string Name { get; set; }
    [Range(1,20,ErrorMessage="Invalid Age")]
    public int Age { get; set; }
    [Required(ErrorMessage="Email Required")]
    [RegularExpression(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}")]
    public string Email { get; set; }
    [UIHint("CountryDropDown")]
    public string Country { get; set; }
}

如何使用下拉列表在mvc中制作ASCX?

2 个答案:

答案 0 :(得分:2)

使用&lt;%=告诉ASP打印以下语句。在这种情况下,您不希望这样做。

<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<% 
    ViewData["countries"] = new string[] { "France", "Germany", "US", "UK" };
    var q = ViewData["countries"]; 
%>
<%= Html.DropDownList("",ViewData["countries"] as SelectList)%>

试试吧。

另外,为什么要指定q而不使用它?

答案 1 :(得分:0)

更改

<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>

<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Customer>" %>

假设客户位于命名空间的根目录中。

一般评论,我假设您正在学习MVC,并且您想使用最新版本。您提到的文章是针对MVC2的。我建议您在这里完成MVC 3示例:

http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part1-cs

Razor语法应该让您的生活更轻松。你也指控制(你以前的帖子)。控件存在于Web表单中,它们非常适合您希望开发组件。

MVC在这个意义上是完全不同的,一旦你完成这些例子,你应该更好地理解。