我对如何连接MvcHtmlString实例有一些疑问,因为在MSDN中找到了这些信息:
MvcHtmlString类表示不应再次编码的HTML编码字符串
使用这样的代码时,我冒险将字符串HTML编码两次:
var label = Html.LabelFor(model => model.Email);
var textbox = Html.TextBoxFor(model => model.Email);
var validation = Html.ValidationMessageFor(model => model.Email);
var result = MvcHtmlString.Create(
label.ToString() + textbox.ToString() + validation.ToString());
Run Code Online (Sandbox Code Playgroud)
(注意:这应该进入HtmlHelper扩展方法以减少视图中的代码重复).
我有一个需要返回HtmlString的扩展方法.该方法有一个循环,它将构建HtmlString,但是HtmlString对象没有Append方法,并且不允许使用+运算符进行连接,所以我不确定如何构建HtmlString.
我想使用StringBuilder,但它没有ToHtmlString方法......
这个的任何解决方案或模式?
我正在尝试制作一个HtmlHelper,我需要允许用户将自己的自定义属性添加到html标记中.
我尝试使用TagBuilder类来做到这一点,但似乎不是合并属性,而是替换它们.
这就是我在C#中所做的:
public static MvcHtmlString List(HtmlHelper helper, object htmlAttributes)
{
var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
var tag = new TagBuilder("div");
tag.AddCssClass("myClass");
tag.MergeAttributes(attributes, false);
// tag class property has value "myClass", not "myClass testClass"
return new MvcHtmlString("<div>");
}
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
@Html.List(new { @class = "testClass" })
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一个局部视图,我正在尝试使用ITextSharp将html转换为pdf.如何将html转换为字符串,以便我可以使用ItextSharps HtmlParser?
我尝试过这样的事情没有运气......任何想法?:
var contents = System.IO.File.ReadAllText(Url.Action("myPartial", "myController", new { id = 1 }, "http"));
Run Code Online (Sandbox Code Playgroud) 我有一个使用模型创建下拉列表的prtialview。在我的主视图中,我创建了partialview html字符串,以便稍后在javascript函数中使用它。
视图:
@model SomeViewModel
@{
var devicesDropDown = @Html.Partial("_DropDown", (SelectList)(Model.DeviceTypes));
var devicesHtmlDropDown = MvcHtmlString.Create(devicesDropDown.ToString());
}
Run Code Online (Sandbox Code Playgroud)
但是,当我想以这种方式在javascript中使用它时,它就像是导致javascript函数出错的未连接字符串。
js函数位于页面的底部:
<script type="text/javascript">
function format(d) {
var ddl = '@( devicesHtmlDropDown)';
return ddl;
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是运行时字符串的样子:
var ddl = '<select class="form-control input" id="SelectedValue" name="SelectedValue" style="width: 100%">
<option selected="selected" value="456413">1</option>
<option value="564655465">2</option>
</select>
';
Run Code Online (Sandbox Code Playgroud)
我应该如何格式化此字符串以使其可以像静态html对象一样呈现。以及如何检索此下拉菜单的选定值以发布到操作?我应该使用TagBuilder吗?
javascript asp.net-mvc partial-views tagbuilder mvchtmlstring
当我在Html Helpers中使用构建时,我可以简单地编写以下内容.
@Html.Actionlink(bla)
Run Code Online (Sandbox Code Playgroud)
但是当我编写自己的Html Helpers时,我需要通过将其包装在一个中来阻止编码 MvcHtmlString
@MvcHtmlString.Create(Html.CustomPager(bla))
Run Code Online (Sandbox Code Playgroud)
我可以在扩展方法中做些什么,这样我就不用担心"不"编码吗?
在MVC中,SelectList派生自MultiSelectList.我不能说出他们之间的区别.对于两者,我必须告诉它选择多个项目(我希望不必这样做,因为名称中有"multi").
如果在下面的代码中用"MultiSelectList"替换"SelectList",它将生成相同的HTML:
<%
var leftSelectList = new SelectList(Model.LeftSide,"Key","Value");
var attrs = new SortedDictionary<string, object> {{"class", "ui-widget"}};
MvcHtmlString disabledStyle = MvcHtmlString.Create(Html.Encode("'width:50px;'"));
attrs.Add("style", disabledStyle);
attrs.Add("multiple", "multiple");
attrs.Add("size", "5"); /*-- how many items to show--*/
var leftItems = Html.DropDownList("ddlLeftItems", leftSelectList, attrs); %>
<%= leftItems.ToHtmlString()%>
Run Code Online (Sandbox Code Playgroud)
生成的HTML是:
<select class="ui-widget" id="ddlLeftItems" multiple="multiple" name="ddlLeftItems" size="5" style="&#39;width:50px;&#39;">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="5">E</option>
<option value="9">I</option>
</select>
Run Code Online (Sandbox Code Playgroud)
那么,我应该使用哪一个?谢谢.
asp.net-mvc ×4
html-helper ×2
c# ×1
itextsharp ×1
javascript ×1
multi-select ×1
pdf ×1
razor ×1
selectlist ×1
tagbuilder ×1