【问题标题】:How to setup a helper for an Html extension如何为 Html 扩展设置助手
【发布时间】:2014-11-24 01:46:29
【问题描述】:

对于这个问题有些含糊,我提前道歉。我已经设置了一些自定义 Html 帮助器以在部分视图中使用...

我要做的是设置它,所以如果想更改字段的显示方式,那么我可以使用扩展。

以下内容:

@Html.FieldFor("Somefield", "Label name:", @Model.Somevalue)

将在屏幕上呈现一个标准文本框,其 Id 为“SomeField”,标签为“Label Name:”,第三个元素将显示在字段本身中。

假设我想在屏幕上显示 @Model.Somevalue 中的值,而不是在文本字段中,如果该值当时不可编辑...

在那种情况下,我希望能够拥有这样的东西......

@Html.FieldFor("Somefield", "Label name:", @Model.Somevalue).NotEditbable()

并在帮助程序中使用它来确定传回的代码。有人可以指出我可以用来完成此任务的教程或其他资源吗?

如果有用的话,下面是有问题的助手......

public static MvcHtmlString FieldFor(this HtmlHelper helper, string FieldName, string Label, string ValueContents = null)
    {
        return new MvcHtmlString(String.Format("<label for=\"{0}\">{1}</label><input id=\"{0}\" type=\"text\" Value = \"{2}\">", FieldName, Label, ValueContents));
    }

【问题讨论】:

  • 有什么理由不在你的FieldFor() 方法中添加一个bool 参数吗?
  • 我想将它用于我想要的任何自定义助手,而不必传入这样的变量。然后,我将不得不修改每个自定义助手以接受我想要进行的每种更改类型的变量。最终,我想设置一个,不仅可以显示如上所示的数据,还可以禁用以及其他原因。我知道这是可能的,但我不记得给它指定的术语来查找如何做到这一点。
  • 只需给它一个bool 的默认值,这样您就不必更改任何现有代码,除非您希望它们是只读的:public static MvcHtmlString FieldFor(this HtmlHelper helper, string FieldName, string Label, string ValueContents = null, bool readonly=false)。为MvcHtmlString 添加扩展方法并非不可能,但由于MvcHtmlString 本身已经包装为一个完整的字符串,因此编辑第二手生成的html 可能会很棘手。

标签: asp.net-mvc razor asp.net-mvc-5 html-helper


【解决方案1】:

我最终使用此page 作为指南来设置新的扩展方法,然后创建方法我将 MVCHtmlString 切换为常规字符串...进行了更改,我想做然后重新编码它到一个 MVCHtmlString...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多