Asp.net mvc 4 预加载并禁用EditorFor
我正在练习MVC4。我的实践项目是一种简单的评论板/论坛,允许注册用户和匿名用户发表评论 目前,我已经设置了我的代码,这样即使是注册用户也可以在提交小名+消息表单时输入他们想要的任何名称。我希望对注册用户禁用此行为,而不是使用从其登录信息中获取的用户名 理想情况下,注册用户的名称框中已加载用户名,并且不可编辑。当表单通过验证时,将使用此用户名,以确保名称和消息均为空 以下是我在视图中的代码:Asp.net mvc 4 预加载并禁用EditorFor,asp.net-mvc-4,html-helper,editorfor,Asp.net Mvc 4,Html Helper,Editorfor,我正在练习MVC4。我的实践项目是一种简单的评论板/论坛,允许注册用户和匿名用户发表评论 目前,我已经设置了我的代码,这样即使是注册用户也可以在提交小名+消息表单时输入他们想要的任何名称。我希望对注册用户禁用此行为,而不是使用从其登录信息中获取的用户名 理想情况下,注册用户的名称框中已加载用户名,并且不可编辑。当表单通过验证时,将使用此用户名,以确保名称和消息均为空 以下是我在视图中的代码: <div class="editor-label"> @Html.Label
<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>
@LabelFor(x=>x.comment.Name)
@Html.ValidationMessageFor(x=>x.comment.Name)
@if(User.Identity.Name==“”){
@EditorFor(x=>x.comment.Name)
}否则{
@EditorFor(x=>x.comment.Name,Model.PosterName)
}
注意Model.PosterName只是将用户的用户名作为字符串保存。它不是null或空的
如何编辑第二个EditorFor行,以便使用Model.PosterName作为默认选项?我是否应该使用DisplayFor来代替不可编辑的行为
我上面写的代码并没有用任何值填充EditorFor
谢谢 为新注释传递到视图中的模型应将
comment.Name
设置为所需的值。您可以在控制器中执行此操作。如果你可以发布你的控制器代码,我将能够给你确切的代码,你需要添加
如果要在视图中禁用此输入字段,请执行以下操作:
@Html.TextBoxFor(x => x.comment.Name, new { @disabled = "disabled" } )
如果知道它是一个文本框,则无需使用
EditorFor
。使用TextBoxFor
可以指定上述html属性。感谢您的回复。我确实按照您的建议将用户名输入到控制器中的注释模型中,效果很好。我想指出的一点是,视图的代码行导致验证将字段视为空,尽管文本已锁定。但是使用:new{@readonly=“readonly”}就可以了,尽管我更喜欢您的代码禁用光标图标。