0

我正在寻找与此处给出的相同答案: HTML/CSS 制作一个文本框,其中的文本显示为灰色,并在我单击输入信息时消失,如何?

但我想在 MVC4 中做到这一点。

我得到以下观点:

  @using (Html.BeginForm("Kompetens", "KumaAdmin"))
            {  
                <div class="three columns" style="margin-right: 627px;">
                    <h6>Kompetens</h6>
                    <div style="width:456px;"> @Html.ListBox("kompetensId", (SelectList)ViewBag.KomId)</div><br/>
                    <h6>Lägg till kompetens</h6>
                    <div class="focus">
                    @Html.EditorFor(mm => mm.KompetensTest)
                    </div>
                    <input type="submit" style="margin-right: 205px;" value="Skapa"/><br/><br/>
                </div>
             }

因为这是我的文本框:

@Html.EditorFor(mm => mm.KompetensTest)

我不知道如何在上面的链接中应用“onfocus”和 onblur 属性。

4

3 回答 3

1

您需要创建一个编辑器模板。因为 Html.EditorFor 没有 "object htmlattributes" 参数来做 "new { onfocus = "js here" }"。

在视图>共享,

创建一个名为 EditorTemplates 的文件夹

然后,您使用@model 字符串/无论该对象是什么来创建视图。根据需要命名文件。

当您将 @model 放在视图上时,您指定它只接受此类型作为模型。

在此视图中,您创建了一个 Html.TextBox(不是 TextBoxFor),瞧。

在 Html.EditorFor 方法上,还有一种方法可以设置您要使用的编辑器模板。通过键入它的名称来选择您创建的一个,如下所示:

@Html.EditorFor(mm => mm.KompetensTest, "GreyedTemplate")

我命名为视图的代码:GreyedTemplate.cshtml

@model string

@Html.TextBox("", Model, new { onfocus = "", onclick="" })

注意第一个参数是空的。这是故意这样做的,因为当您使用 EditorFor(mm => mm.KompetensTest,"GreyedTemplate") 时,它会自动使用 KompetensTest 作为字段的名称。

于 2013-02-22T14:03:32.973 回答
0

您想使用占位符 html 属性 ( http://www.w3schools.com/tags/att_input_placeholder.asp )

就像是@Html.EditorFor(mm => mm.KompetensTest, new { placeholder = "Text" })

于 2013-02-22T13:53:05.150 回答
0

@Gmoliv 它终于奏效了!我搜索了一下,发现“Editfor”无法访问 html 属性。虽然我找到了可以访问它们的“TextBoxFor”,但解决方案是:

 @Html.TextBoxFor(mm => mm.Profile, new { placeholder = "Ange Profil" })

@Pedro我真的很努力让它工作,但问题是我无法获得要设置的值,所以它总是空的,我在视图和模板视图中设置它,它根本没有。如果可以的话,我将不胜感激完整的代码示例

非常感谢!

于 2013-02-22T15:57:53.320 回答