asp.net-mvc-4 - 预加载并禁用 EditorFor

标签 asp.net-mvc-4 html-helper editorfor

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

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

理想情况下,注册用户的姓名框已加载其用户名并且不可编辑。当表单通过验证时,将使用此用户名,以确保名称和消息都不为空。

这是我的 View 代码:

<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>

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

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

我上面编写的代码不会使用任何值填充 EditorFor。

谢谢!

最佳答案

您传递到新评论 View 的模型应将 comment.Name 设置为您想要的任何值。您可以在 Controller 中执行此操作。如果您可以发布您的 Controller 代码,我将能够为您提供您需要添加的确切代码。

如果您想在 View 中禁用此输入字段,请执行以下操作:

@Html.TextBoxFor(x => x.comment.Name, new { @disabled = "disabled" } )

如果您知道它是一个文本框,则无需使用 EditorFor。使用 TextBoxFor 使您能够像上面一样指定 html 属性。

关于asp.net-mvc-4 - 预加载并禁用 EditorFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595189/

相关文章:

asp.net-mvc - jQuery Mobile 1.3.x 和 ASP.NET MVC 4 Razor 的 ListView 渲染问题

javascript - 在 MVC4 中,如何在 Razor 文件中创建脚本包

c# - 重写自定义对象的 Html.DisplayFor<> 帮助器的正确方法是什么

jquery - Wordpress The Events Calendar Plugin - ListView 背景颜色问题

asp.net-mvc - 如何设置默认值 HTML.EditorFor()

c# - 在 Visual Studio 2012 中添加对其他项目的引用

c# - 使用 HttpPostedFileBase 的强类型模型无法搭建 View

c# - 如何在 html 帮助程序中使用 asp.net mvc 3 razor 进行内联样式

css - 如何更改 MVC 5 @Html.EditorFor 宽度

ajax - 通过 Ajax 动态加载 EditorFor 模板