0

我的登录操作有一个 LoginModel,但我只想使用 HTML。

例子...

公共类登录模型
{
  [必需的]
  公共字符串电子邮件 { 获取;设置;}
}

在我的 HTML 中,我有
<input type="text" value="" name="Email">

这是因为我要将我的 HTML 存储在我的数据库中,我遇到的问题是,如何在不使用 Html.ValidationSummary() 的情况下获得模型验证?

我希望我能做到

<div class="validation-summary-errors"></div>

因为这是 HTML 中的内容,但不起作用..

想法?

4

1 回答 1

1

无论您将 HTML 存储在何处,验证都是在客户端完成的。关于如何使用虚拟路径提供程序将您的视图存储在其他地方 (DB) 的各种帖子,然后验证应该仍然可以正常工作。我想我错过了为什么它不适合你,所以我不得不想象你没有使用路径提供程序来查找你的视图。

编辑

似乎您想将消息注入 Div。除非您在路径提供程序中使用一些魔法,否则这不会自动发生。在视图中使用您自己的辅助方法以避免黑客攻击,或者只使用默认提供的方法。如果您真的想这样做,请在您的控件中呈现您的视图并搜索要替换的 Div 模式。 自定义 ValidationForMessage 帮助器删除 css 元素

注意达林的方法

var 表达式 = ExpressionHelper.GetExpressionText(ex);
    var modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(表达式);
    var modelState = htmlHelper.ViewData.ModelState[modelName];

如果无法访问控制器中的 ViewContext,您只能为您的视图呈现 html。但是,在您的视图中的某个地方(据我所知)您需要一个辅助方法来将您的错误集合粘贴到 ViewData 中。

您的虚拟路径提供程序可能必须将此辅助方法注入您的视图文本中,以便 Razor 解析它。实际上 - 呃。这可能会容易得多。您的提供者可能只需从数据库中读取您的 html,找到 div,然后将 @Html.ValidationSummary 注入该 div。我相信这会奏效。为什么不把验证摘要放在那里,但如果它最终还是会出现(基本上)

于 2011-10-18T21:16:56.600 回答