Asp.net mvc 如何为Html扩展设置帮助程序

Asp.net mvc 如何为Html扩展设置帮助程序,asp.net-mvc,razor,asp.net-mvc-5,html-helper,Asp.net Mvc,Razor,Asp.net Mvc 5,Html Helper,我为这个问题的模糊性道歉。我已经设置了一些自定义Html帮助程序,以便在局部视图中使用 我想做的是设置它,这样如果想要更改字段的显示方式,那么我可以使用扩展名 以下是: @Html.FieldFor("Somefield", "Label name:", @Model.Somevalue) 将在屏幕上呈现一个标准文本框,Id为“SomeField”,标签为“Label Name:”,第三个元素将显示在字段本身中 假设我想在屏幕上显示@Model.Somevalue中的值,如果该值当时不可编辑,

我为这个问题的模糊性道歉。我已经设置了一些自定义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));
    }
public static MvcHtmlString FieldFor(此HtmlHelper,string FieldName,string Label,string ValueContents=null)
{
返回新的MvcHtmlString(String.Format(“{1}”,FieldName,Label,ValueContents));
}

最后,我用这个作为指导,设置了一个新的扩展方法,然后创建了这个方法,我将MVCHtmlString切换为常规字符串。。。进行了更改,我想将其制作并重新编码为MVCHtmlString…

是否有理由不在
FieldFor()
方法中添加
bool
参数?我想将其用于我想要的任何自定义帮助程序,而不必传入这样的变量。然后,我必须修改每一个自定义帮助程序,以便为我要进行的每种更改类型接受一个变量。最后,我想设置一个,不仅显示如上所示的数据,而且禁用以及其他原因。我知道这是可能的,但我记不起给它的术语来查找如何操作。只需为
bool
给它一个默认值,这样你就不必更改任何现有代码,除非你希望它们是只读的:
public static MvcHtmlString FieldFor(此HtmlHelper帮助程序、字符串字段名、字符串标签、字符串值contents=null、bool readonly=false)
。为
MvcHtmlString
添加扩展方法并非不可能,但由于
MvcHtmlString
本身已包装为一个完整的字符串,因此编辑第二手生成的html可能很棘手。