2013-02-06 13 views
0

我们的客户端只需要一个视图窗体(使控件为只读形式并不是一个可接受的解决方案:-()它显示文本框的值/下拉列表框逗号分隔值)作为标签,当用户只读访问该表单时,是否有一个Jquery插件可以做到这一点?我不想创建一个单独的部分视图集来完成这个任务。这方面是非常赞赏。Jquery - 将控件更改为标签(仅限查看表单)

感谢,

拉贾

+0

你为什么不阻止他们发布呢? – Popnoodles

+0

我已经完全采取了任何有点行动的按钮,但它是不被客户接受的。他们希望用户只能看到标签,只要它们具有只读访问权限即可。 – Raja

+0

只有标签?那么不是具有这些值的输入?只是标题像“标题”没有有用的数据“电子邮件”没有有用的数据等 – Popnoodles

回答

1

是的,你可以。我不建议。

使用CSS类中声明你的助手这样你就可以抓住他们所有jQuery选择

@Html.TextBox("txtName", "20", new { @class = "cssChange" }) 

使用jQuery来改变自己的形式,以标签

$(".cssChange").replaceWith(function() { 
    return "<input type=\"label\" value=\"" + $(this).html() + "\" />"; 
}); 

我的代码没有测试 。这纯粹是有益的。

我建议反对它。我会推荐另一个带有标签和切换的div。但是这个选项是可用的。祝你好运。

+0

这似乎是一个不错的选择。我将以此为起点,并与之合作。感谢一堆戴夫:)。 – Raja

+0

@Raja,祝你好运! –

0
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()); 
    } 
+0

然后只是@ Html.EditorOrDisplayFor(m => m.myData,Model.CanEdit.myData,200) – KennyZ

+0

框宽度是我最终需要以后。 – KennyZ