我的自动对焦属性未在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;
没人工作!为什么呢?答案 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
属性。