我正在尝试做一个小的渲染框架,因为我需要对渲染过程进行更多的控制。Fx。是否需要在选项卡中呈现属性。
所以我开始渲染一个TextBox,但它不能用服务器端或客户端验证( MVC非侵入性验证)。
我已经拿出了我的框架,并重新创建了一个小的eksampel
public class Foo
{
public virtual int Id { get; set; }
[System.ComponentModel.DataAnnotations.Required]
public virtual string Name { get; set; }
public virtual DateTime StartTime { get; set; }
}我的扩展方法:
public static MvcHtmlString DummyForm(this HtmlHelper html)
{
StringBuilder sb = new StringBuilder();
Type oftype = typeof(Foo);
string[] propertyNameToRender = oftype.GetProperties().Select(o => o.Name).ToArray();
foreach (string s in propertyNameToRender)
{
MvcHtmlString htmlstring = System.Web.Mvc.Html.InputExtensions.TextBox(html, s);
sb.AppendLine(htmlstring.ToHtmlString());
}
return MvcHtmlString.Create(sb.ToString());
}在Edit.cshtml上
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true);
@Html.DummyForm()
}如果我看一下呈现的html输出,它是相同的(没有验证attri)谁能告诉我,为什么没有呈现验证attri。
我正在使用mvc自己的渲染控件,所有的ModelMetadata和ModelState都是从视图传递的HtmlHelper。
发布于 2011-10-08 20:57:38
我试着创建一个新的ASP.net MVC站点,并添加来自我的RenderProject的代码,它工作得很好。结论是我的asp.net MVC项目搞砸了。我不知道为什么。:S
发布于 2011-10-04 03:45:29
初始化FormContext时,将呈现不显眼的验证data-val-*属性。Html.BeginForm就是这么做的,所以
@using (Html.BeginForm())
{
@Html.DummyForm()
}应该使用验证属性来呈现输入。
发布于 2011-10-04 12:29:48
有一件事看起来很奇怪,那就是你自己在调用System.Web.Mvc.Html.InputExtensions.TextBox方法。此方法由Html.TextBox和其他强类型扩展在内部调用。请尝试更换
MvcHtmlString htmlstring = System.Web.Mvc.Html.InputExtensions.TextBox(html, s);至
MvcHtmlString htmlstring = html.TextBox(s);https://stackoverflow.com/questions/7639643
复制相似问题