对于想了解在SpringMVC中有条件地渲染HTML的读者,本文将提供新的信息,我们将详细介绍springmvc实现,并且为您提供关于asp.net-mvc–什么是HtmlHelper渲染htmlAt
对于想了解在Spring MVC中有条件地渲染HTML的读者,本文将提供新的信息,我们将详细介绍spring mvc实现,并且为您提供关于asp.net-mvc – 什么是HtmlHelper渲染htmlAttributes对象的方法?、asp.net-mvc – 如果在@ Html.DisplayFor中有条件、asp.net-mvc – 我可以在_Layout.cshtml中有条件地渲染部分视图吗?、asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3的有价值信息。
本文目录一览:- 在Spring MVC中有条件地渲染HTML(spring mvc实现)
- asp.net-mvc – 什么是HtmlHelper渲染htmlAttributes对象的方法?
- asp.net-mvc – 如果在@ Html.DisplayFor中有条件
- asp.net-mvc – 我可以在_Layout.cshtml中有条件地渲染部分视图吗?
- asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3
在Spring MVC中有条件地渲染HTML(spring mvc实现)
是否有任何标签可以有条件地呈现HTML块。例如:Struts具有:
<logic:present name="someForm" property="someProperty"> //Code block</logic:present>
例如:JSF具有:
<h:panelGrid rendered="#{not empty someList}"> //Some code block</h:panelGrid>
spring MVC中有类似的东西吗?
答案1
小编典典普通的旧JSTL可以拯救您!
Spring MVC的优点在于,它不会像其他框架那样添加大量的冗余标签库。您现在可以始终依靠JSTL进行此类检查,这是JSP规范的一部分。
<c:if test="${not empty someList}"></c:if>
asp.net-mvc – 什么是HtmlHelper渲染htmlAttributes对象的方法?
示例很简单.
在主视图中我有类似的东西
@Html.EditorFor(Function(x) x.someProperty,New With {.htmlAttributes = New With {.}}).
在编辑模板中,我需要编写class =“form-control”属性.
如果在模板中我使用类似@Html.TextBoxFor(Function(x)x,ViewData(“htmlAttributes”))的东西,那么一切都还可以.但是如果我手动构建一个标签,我就无法输出htmlAttributes,即我构建< input type =“text”{htmlAttributes应该在这里} />
是否有任何公共方法可以正确地在标记内呈现HTML属性?
解决方法
视图
@Html.EditorFor(m => m.FooString,new { htmlAttributes = new { @} })
String.cshtml
@Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue.ToString(),ViewData["htmlAttributes"])
如果您正在询问如何执行类似设置默认值的操作,然后可以通过传递htmlAttributes来覆盖或添加默认值.那么,你在那里几乎就是你自己. MVC中没有任何东西可以帮助你(至少完全没有).但是,我确实编写了自己的HtmlHelper扩展来处理这个问题.我实际上写了一个blog post来解释它的作用以及如何使用它.我建议你检查一下,但我会在这里发布代码以保证完整性.
using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using System.Web.Routing; public static partial class HtmlHelperExtensions { public static IDictionary<string,object> MergeHtmlAttributes(this HtmlHelper helper,object htmlAttributesObject,object defaultHtmlAttributesObject) { var concatKeys = new string[] { "class" }; var htmlAttributesDict = htmlAttributesObject as IDictionary<string,object>; var defaultHtmlAttributesDict = defaultHtmlAttributesObject as IDictionary<string,object>; RouteValueDictionary htmlAttributes = (htmlAttributesDict != null) ? new RouteValueDictionary(htmlAttributesDict) : HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributesObject); RouteValueDictionary defaultHtmlAttributes = (defaultHtmlAttributesDict != null) ? new RouteValueDictionary(defaultHtmlAttributesDict) : HtmlHelper.AnonymousObjectToHtmlAttributes(defaultHtmlAttributesObject); foreach (var item in htmlAttributes) { if (concatKeys.Contains(item.Key)) { defaultHtmlAttributes[item.Key] = (defaultHtmlAttributes[item.Key] != null) ? string.Format("{0} {1}",defaultHtmlAttributes[item.Key],item.Value) : item.Value; } else { defaultHtmlAttributes[item.Key] = item.Value; } } return defaultHtmlAttributes; } }
然后,在您的编辑器模板中(此示例中为Date.cshtml):
@{ var defaultHtmlAttributesObject = new { type = "date",@}; var htmlAttributesObject = ViewData["htmlAttributes"] ?? new { }; var htmlAttributes = Html.MergeHtmlAttributes(htmlAttributesObject,defaultHtmlAttributesObject); } @Html.TextBox("",htmlAttributes)
UPDATE
I cannot use @Html.TextBox,but need to write manually
<input type="text" {htmlAttributes should be here} />
为什么?帮助器版本没有任何你无法做到的事情.但是,如果你坚持走这条路,那么你将很难用Razor做这件事.假设您实际上可以在没有Razor语法错误的情况下编写它,那么代码将变得虚拟不可读.我建议在纯C#中使用TagBuilder和/或StringBuilder来构造一个字符串,然后确保返回/设置一个MvcHtmlString类型的变量:
var output = new MvcHtmlString(builder.ToString());
但是,如果你走得那么远,它会否定使用编辑器模板的目的,除非你试图覆盖其中一个默认的编辑器模板.无论如何,我建议您只创建自己的HtmlHelper扩展,然后直接在视图中使用它或在编辑器模板中使用它.
asp.net-mvc – 如果在@ Html.DisplayFor中有条件
如果statusid = 1120则“通过”.
这是我显示statusid的代码:
@Html.displayFor(modelItem => item.statusid)
任何的想法?
解决方法
SomeObject.statusId SomeObject.message @Html.displayFor(modelItem => item.someObjectInstance)
这样做可以让你在视图外添加代码和逻辑,这通常是推荐的.
asp.net-mvc – 我可以在_Layout.cshtml中有条件地渲染部分视图吗?
沿着这些方向的东西 – 例如菜单
<div id="left-sidebar"> @Html.Action("_MenuView","LeftSideMenu") </div>
我想要的一个功能是添加另一个局部视图,但只在网站的某些部分显示.
例如,在博客部分中,我可能想要显示帖子类别列表或帖子的树视图.
<div id="left-sidebar"> @Html.Action("_MenuView","LeftSideMenu") @if ("???") { @Html.Action("_BlogTreeView","BlogEntries") } </div>
我怎么能这样做?我知道如果我正在渲染的视图由BlogController返回,我想显示“_BlogTreeView”…我从哪里开始?
解决方法
@RenderSection("blogEntries",false)
然后在每个要显示局部视图的视图中添加以下内容:
@section blogEntries { @Html.Action("_BlogTreeView","BlogEntries") }
asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3
@model TraktorumMVC.Models.ManagePhotos @{ ViewBag.Title = "ManagePhotos"; Layout = "~/Views/Shared/_Layout.cshtml"; var grid = new WebGrid(Model.AdPhotos); } @grid.GetHtml( displayHeader: false,columns: grid.Columns( grid.Column(format: (item) => { if (item.IsMainPreview == true) { return @<text><img src="@Url.Content("~/Content/images/preview-photo.gif")" alt="Image "/></text>; } else { return @<text><img src="@Url.Content("~/Content/images/non-preview-photo.gif")" alt="Image "/></text>; } } ),grid.Column(format: (item) => Html.ActionLink("Remove Photo","RemovePhoto","Images",new { photoID = @item.Id },new { @})) ));
我不知道如果在webgrid我如何使用.我刚刚尝试,它不工作.getting以下错误
The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string,string,System.Func<dynamic,object>,bool)' has some invalid arguments
解决方法
@grid.GetHtml( displayHeader: false,columns: grid.Columns( grid.Column(format: (item) => { if (item.IsMainPreview == true) { return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>",Url.Content("~/Content/images/preview-photo.gif"))); } else { return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>",Url.Content("~/Content/images/non-preview-photo.gif"))); } } ),new { photoID = item.Id },new { @})) ));
同样在最后一行,而不是新的{photoID = @ item.Id},您应该写新的{photoID = item.Id}
要了解更多关于剃须刀的详细tutorial.
关于在Spring MVC中有条件地渲染HTML和spring mvc实现的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于asp.net-mvc – 什么是HtmlHelper渲染htmlAttributes对象的方法?、asp.net-mvc – 如果在@ Html.DisplayFor中有条件、asp.net-mvc – 我可以在_Layout.cshtml中有条件地渲染部分视图吗?、asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3的相关知识,请在本站寻找。
本文标签: