C# 如果文本框有值,如何将其设置为只读?
如果文本框在MVC视图中有值,我想将其设置为只读 所以我写C# 如果文本框有值,如何将其设置为只读?,c#,asp.net-mvc,C#,Asp.net Mvc,如果文本框在MVC视图中有值,我想将其设置为只读 所以我写 <tr> @if (model.first_name != "" ) { <td > @Html.LabelFor(model => model.first_name): </td> <td > @Html.TextBoxFor(model => mode
<tr>
@if (model.first_name != "" ) {
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.TextBoxFor(model => model.first_name)
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
@ else
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.EditorFor(model => model.first_name)
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
@}
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.EditorFor(model => model.first_name)
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
</tr>
@如果(model.first_name!=“”){
@Html.LabelFor(model=>model.first_name):
@Html.TextBoxFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
@否则
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
@}
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
但是它不起作用。。
怎么解决呢??
如何操作???在razor中创建一个if语句,并在要禁用的输入/编辑器上设置一个disabled=“disabled”
@if
(model.first_name != null)
{
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.TextBoxFor(model => model.first_name)
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
}
else
{
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.EditorFor(model => model.first_name, new { disabled = "disabled", @readonly = "readonly" }))
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
<td >
@Html.LabelFor(model => model.first_name):
</td>
<td >
@Html.EditorFor(model => model.first_name)
<span class="required">*</span>
@Html.ValidationMessageFor(model => model.first_name)
</td>
</tr>
@if
(model.first_name!=null)
{
@Html.LabelFor(model=>model.first_name):
@Html.TextBoxFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
}
其他的
{
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name,新的{disabled=“disabled”,@readonly=“readonly”}))
*
@Html.ValidationMessageFor(model=>model.first_name)
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
}您可以将字段设置为
readonly=“readonly”
而不是disabled=“disabled”
一个只读字段值将提交到服务器,而用户仍然无法编辑该值。您可以修改视图模型,如下所示
public class MyViewModel
{
public string first_name { get; set; }
public object first_name_attributes
{
get
{
return string.IsNullOrEmpty(first_name) ? null : new { @readonly = "readonly" };
}
}
}
在UI中,您可以声明性地添加对象
Html.TextBoxFor(x => x.first_name, first_name_attributes)
这将产生一个更简单的UI,视图模型的优点是可以进行单元测试 它不是编译(缺少括号)还是有单独的问题?发生了什么?虽然这会起作用,但请不要在视图中放置类似的
if
块。让您的视图模型为您完成工作会更有表现力。@jarrett那么您的解决方案是什么呢?@JarrettMeyer感谢您的反馈。我同意你的看法。我只是想告诉用户1348351如何修复他的代码。