我正在将C#和MVC用于我的Web应用程序,并且我希望在编码时让生活变得轻松,所以我在视图中做了以下操作。我使用Devexpress。因此,为了减少视图中的编码,我执行了以下操作。
我创建了一个像这样的类:
public class EditorUtils
{
public static void Label(HtmlHelper htmlHelper, string CssClass, Object Model, String DataField)
{
LabelSettings lbSettings = new LabelSettings
{
Text = Text,
Width = Width
};
lbSettings.ControlStyle.CssClass = CssClass;
htmlHelper.DevExpress().Label(lbSettings).Bind(DataBinder.Eval(Model, DataField)).GetHtml();
}
}
这对我来说很容易,因为我现在只有一行代码可以在视图中呈现标签。
我这样使用它:
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName1");
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName2");
我喜欢通过将编辑器放在html表中来组织它们,并创建了一个像这样的类:
public class HtmlUtils
{
public static void BeginTable(HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write("<table>");
}
public static void NewRow(HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write("<tr><td>");
}
public static void NewColumn(HtmlHelper htmlHelper, string CssClass)
{
htmlHelper.ViewContext.Writer.Write(string.Format("</td><td class=\"{0}\">", CssClass));
}
public static void EndRow(HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write("</td></tr>");
}
public static void EndTable(HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write("</table>");
}
}
我认为这样使用它。
HtmlUtils.BeginTable(Html);
HtmlUtils.NewRow(Html);
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName1");
HtmlUtils.NewColumn(Html);
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName2");
HtmlUtils.EndRow(Html);
HtmlUtils.EndTable(Html);
这将导致一个具有1行和2列的值的表。
现在要点了。我想通过这样做来进一步优化它。
HtmlUtils.BeginTable(Html);
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName1").NewRow(Html); //this will create a new row and column and put the lable inside the field
EditorUtils.Label(Html, "MyCssClass", Model, "FieldName2").NewColumn(Html); //this will create a new column and put the lableiside the field
HtmlUtils.EndTable(Html);
我非常努力地寻求解决方案,但迄今为止找不到。有人可以送我去正确的方向吗?
亲切的问候,
答案 0 :(得分:1)
我只是在没有测试能力的情况下很快地编写了此代码。我希望它能对我有所帮助,因为我主要使用Web表单而不是MVC。
也可能需要查看以下页面。 (自从我使用它们已经有一段时间了,但是我怀疑它们比使用硬编码的字符串更好。) HtmlGenericControl Class Table Class
public static class HtmlUtilsExtensions
{
public static HtmlHelper BeginTable(this HtmlHelper htmlHelper)
{
return htmlHelper.ViewContext.Writer.Write("<table>");
}
public static HtmlHelper NewRow(HtmlHelper htmlHelper)
{
return htmlHelper.ViewContext.Writer.Write("<tr><td>");
}
public static HtmlHelper NewColumn(HtmlHelper htmlHelper, string CssClass)
{
return htmlHelper.ViewContext.Writer.Write(string.Format("</td><td class=\"{0}\">", CssClass));
}
public static HtmlHelper EndRow(HtmlHelper htmlHelper)
{
return htmlHelper.ViewContext.Writer.Write("</td></tr>");
}
public static HtmlHelper EndTable(HtmlHelper htmlHelper)
{
return htmlHelper.ViewContext.Writer.Write("</table>");
}
}
那么你可以做这样的事情。
Html
.BeginTable()
.NewRow()
.Label(Html, "MyCssClass", Model, "FieldName1")
.NewColumn()
.Label(Html, "MyCssClass", Model, "FieldName2")
.EndRow()
.EndTable();
Html.BeginTable().NewRow()
.Label(Html, "MyCssClass", Model, "FieldName1")
.NewColumn()
.Label(Html, "MyCssClass", Model, "FieldName2")
.EndRow().EndTable();
请务必告诉我们您的情况:D