html5自动对焦在asp.net mvc上不起作用

时间:2014-04-22 16:50:32

标签: asp.net-mvc

我的自动对焦属性未在html中呈现!

这是用razor定义的html:

   <div class="form-group">
            @Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name,null, new { autofocus=""})
                @Html.ValidationMessageFor(model => model.Name)
            </div>
        </div>

来自服务器生成的html:

<div class="form-group">
            <label class="control-label col-md-2" for="Name">Name</label>
            <div class="col-md-10">
                <input class="text-box single-line" data-val="true" data-val-length="A test needs a title" data-val-length-max="100" data-val-length-min="1" data-val-required="A test needs a title" id="Name" name="Name" type="text" value="" />
                <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
            </div>
        </div>

我看不到自动对焦属性...我尝试过自动对焦=&#34;自动对焦&#34;或自动对焦=&#34;&#34;

没人工作!为什么呢?

2 个答案:

答案 0 :(得分:2)

这是因为您使用的是EditorFor而不是像TextBoxFor那样的特定内容。

如果你看一下EditorFor的重载,就没有任何重载接受htmlAttributes。您实际使用的重载是使用additionalViewData。

如果你改成这个它应该工作(注意我删除了中间的空参数):

@Html.TextBoxFor(model => model.Name, new { autofocus=""})

答案 1 :(得分:1)

EditorFor呈现一个编辑器模板,您使用的重载将匿名对象作为附加ViewData传递;这并不意味着编辑器模板实际上会对它做任何事情。请尝试使用TextBoxFor,其中包含接受其他HTML属性的重载:

@Html.TextBoxFor(m => m.Name, new { autofocus = "autofocus" })

或者,如果您使用的是自定义编辑器模板,则需要对您传递给它的信息执行某些操作;具体而言,在"autofocus"集合中查找ViewData键并相应地渲染autofocus属性。