预加载并禁用EditorFor

New*_*013 2 html-helper editorfor asp.net-mvc-4

我正在用MVC4做一些练习.我的练习项目是一种简单的评论板/论坛,允许注册用户和匿名用户发表评论.

目前,我已经设置了代码,以便即使注册用户也可以在提交小名称+消息表单时输入他们想要的任何名称.我想要的是为注册用户禁用此行为,而不是使用从其登录信息中获取的用户名.

理想情况下,注册用户的名称框中已经加载了用户名并且无法编辑.当表单经过验证时,将使用此用户名,这确保名称和消息都不为空.

这是我的视图中的代码:

<div class="editor-label">
        @Html.LabelFor(x => x.comment.Name)
    </div>
    <div class="editor-field">
        @Html.ValidationMessageFor(x => x.comment.Name)
        <br />
        @if (User.Identity.Name=="") {
            @Html.EditorFor(x => x.comment.Name)
        } else {
            @Html.EditorFor(x => x.comment.Name, Model.PosterName)
        }
    </div>
Run Code Online (Sandbox Code Playgroud)

请注意,Model.PosterName只是将用户的用户名保存为字符串.它不为null或为空.

如何编辑第二个EditorFor行,以便使用Model.PosterName作为默认选项?我是否应该使用DisplayFor代替不可编辑的行为?

我上面编写的代码没有任何值填充EditorFor.

谢谢!

Flo*_*min 5

传递到视图中的新注释的模型应该comment.Name设置为您想要的值.你可以在你的控制器中做到这一点.如果您可以发布您的控制器代码,我将能够为您提供您需要添加的确切代码.

如果要在视图中禁用此输入字段,请执行以下操作:

@Html.TextBoxFor(x => x.comment.Name, new { @disabled = "disabled" } )
Run Code Online (Sandbox Code Playgroud)

EditorFor如果你知道它是一个文本框,你不需要使用.使用TextBoxFor可以指定上面的html属性.