通过阅读Scottgu articles
,我轻松实现了网络用户控制BUT;我的用户控件返回给我错误:
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?
答案 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在这个意义上是完全不同的,一旦你完成这些例子,你应该更好地理解。