我们的客户需要一个仅查看表单(将控件设为只读不是可接受的解决方案:-(),当用户具有只读访问权限时,它将文本框/下拉列表/列表框(逗号分隔值)的值显示为标签表单。是否有一个 Jquery 插件可以做到这一点?我不想创建一组单独的部分视图来完成这个。
非常感谢这方面的任何帮助。
谢谢,
拉贾
我们的客户需要一个仅查看表单(将控件设为只读不是可接受的解决方案:-(),当用户具有只读访问权限时,它将文本框/下拉列表/列表框(逗号分隔值)的值显示为标签表单。是否有一个 Jquery 插件可以做到这一点?我不想创建一组单独的部分视图来完成这个。
非常感谢这方面的任何帮助。
谢谢,
拉贾
是的你可以。我不建议这样做。
用一个 CSS 类声明你的助手,这样你就可以用一个 JQuery 选择器来获取它们
@Html.TextBox("txtName", "20", new { @class = "cssChange" })
使用 JQuery 将其形式更改为标签
$( ".cssChange" ).replaceWith( function() {
return "<input type=\"label\" value=\"" + $( this ).html() + "\" />";
});
我的代码没有经过测试。这纯粹是有指导意义的。
我建议反对它。相反,我会推荐另一个带有标签和切换的 div。但是这个选项是可用的。祝你好运。
public static MvcHtmlString EditorOrDisplayFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression,
bool canEdit, int boxWidth = 100)
{
var sb = new StringBuilder();
if (canEdit)
{
var editor = htmlHelper.TextBoxFor(expression, new { style = "width: " + boxWidth + "px;" });
sb.AppendFormat("<div class=\"TextEditor\">{0}</div>", editor);
}
else
{
var lbl = htmlHelper.LabelFor(expression);
var hid = htmlHelper.HiddenFor(expression);
sb.AppendFormat("<div class=\"CanNotEdit\">{0}{1}</div>", lbl, hid);
}
return MvcHtmlString.Create(sb.ToString());
}