标签: html-helper

ASP.NET MVC Html Helper扩展和呈现它们所需的"包含"

我已经构建了一个自定义Html Helper扩展,如下所示:

public static string DatePicker(this HtmlHelper helper, string name, string value)
{
        return string.Format(@"<script type='text/javascript'>
$(document).ready(function(){{
    $('#{0}').datepicker({{ 
        changeMonth: true, 
        changeYear:true, 
        dateFormat: 'd-M-yy', 
        firstDay: 1, showButtonPanel: 
        true, 
        showWeek: true 
    }});
}});
</script>
<input type='text' name='{0}' id='{0}' value='{1}'>", name, value);
}
Run Code Online (Sandbox Code Playgroud)

问题是,现在需要页面"包含"以下内容:

<script src="/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.ui.datepicker.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

以及其他一些项目.问题如下:

  1. 如果我要在每个页面中包含这些项目(例如在Site.Master中),是否存在严重的处理开销,从而否定了HtmlHelper组织"包含"的需要 - 考虑到最终会有大约20个包括整个站点中使用的所有不同类型的jQuery UI小部件.

  2. 如果HtmlHelper对"includes"进行排序,则每次使用此DatePicker时它将添加一个(通常页面上有两个)是否有人有办法确定用户是否已经在同一类型的控件上页面,因此当使用DatePicker的多个实例(例如)时,不会重新包含相同的jquery库?

c# asp.net-mvc jquery html-helper include

3
推荐指数
1
解决办法
1万
查看次数

HtmlTable和TagBuilder之间的区别("表")

只是想知道这两者之间的区别是什么,当我在HtmlHelper中构建表时,它们中的一个或另一个的好处是什么

HtmlTable table = new HtmlTable();
Run Code Online (Sandbox Code Playgroud)

和:

TagBuilder table = new TagBuilder("table");
Run Code Online (Sandbox Code Playgroud)

这和这个问题大致相同,

为什么使用TagBuilder而不是StringBuilder?

但我更想知道这两者之间的区别.

c# asp.net-mvc html-helper

3
推荐指数
1
解决办法
2183
查看次数

为Razor调整自定义Html助手(它使用HtmlTextWriter,因此返回void)

问题

我为WebFormViewEngine视图编写了一个非常漂亮的菜单Html帮助器.这个引擎允许你的助手返回void,仍然可以使用:

@Html.Theseus
Run Code Online (Sandbox Code Playgroud)

这对我的助手很有用,因为它可以使用HtmlTextWriter渲染菜单,直接渲染到输出流.

但是,在Razor视图中,Html助手应该返回一个值(通常是MvcHtmlString),这是添加到输出中的值.差异小,后果大.

有一种解决方法,正如GvS指出的那样(参见ASP.NET MVC 2到MVC 3:Razor中的自定义Html助手)如下:

如果帮助程序返回void,请执行以下操作:

@{Html.Theseus;}
Run Code Online (Sandbox Code Playgroud)

(基本上,您只是调用方法,而不是渲染到视图中).

虽然仍然很整洁,但这与@ Html.seus不完全相同.所以...

我的代码很复杂,但效果很好,所以不愿意进行主要编辑,即用另一个编写器替换HtmlTextWriter.一段代码如下:

writer.AddAttribute(HtmlTextWriterAttribute.Href, n.Url);
writer.AddAttribute(HtmlTextWriterAttribute.Title, n.Description);
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.WriteEncodedText(n.Title);
writer.RenderEndTag();

// Recursion, if any
// Snip off the recursion at this level if specified by depth
// Use a negative value for depth if you want to render the entire sitemap from the starting node

    if ((currentDepth < depth) || (depth < 0))
    {
         if (hasChildNodes)
         {
              // Recursive building starts here

              // Open new ul …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper razor

3
推荐指数
1
解决办法
5536
查看次数

Cakephp自定义日期输入表单助手的输出

我有

echo $this->Form->input('birthdate', array( 'label' => __('Geburtsdatum', true)
                        , 'dateFormat' => 'DMY'
                        , 'minYear' => date('Y') - 70
                        , 'maxYear' => date('Y') - 10 ));
Run Code Online (Sandbox Code Playgroud)

在模型中,我将生日设定为日期.现在Cakephp吐出三个选择框,我绝对喜欢.但它也吐出两个丑陋的破折号/连字符,我想摆脱它.

SELECTBOX - SELECTBOX - SELECTBOX

有什么建议?

cakephp html-helper date input

3
推荐指数
1
解决办法
2290
查看次数

MVC3 C#Custom HtmlHelper用于输入验证,包括客户端和服务器端

我已经看到了一些类似的问题,但它们似乎是旧版本的MVC,我没有运气如何将它们应用到MVC3.

基本上我已经编写了一个很好的小htmlhelper,它将显示当前模型的一个选定参数,就像我@Html.DisplayFor()一样,除了我的旁边有一个编辑按钮(原谅这些例子中没有样式!):

按钮示例

当单击此按钮时,它将执行其中一个"弹出窗口",其中显示编辑器字段,并使用一些简单的jquery使页面的其余部分显示为灰色:

弹出的例子

这是我的帮手:

    public static HtmlString PopUpEditorFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, bool textarea = false)
    {
        string id = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));

        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);

        var Display = new TagBuilder("span");
        Display.MergeAttribute("class", "Display");
        Display.InnerHtml = metadata.Model.ToString();

        var Edit_Button = new TagBuilder("span");
        Edit_Button.MergeAttribute("class", "Edit_Button");
        Edit_Button.InnerHtml = " Edit";// change to use resources file 

        var Display_Container = new TagBuilder("div");
        Display_Container.MergeAttribute("class", "Display");
        Display_Container.InnerHtml = Display.ToString(TagRenderMode.Normal) + Edit_Button.ToString(TagRenderMode.Normal);

        var legend = new TagBuilder("legend");
        legend.InnerHtml = "Edit " + metadata.DisplayName ?? …
Run Code Online (Sandbox Code Playgroud)

c# validation html-helper asp.net-mvc-3

3
推荐指数
1
解决办法
7714
查看次数

在asp .net mvc 4中使用htmlhelper创建textarea

使用:ASP .NET MVC 4在我的一个页面中我需要一个具有一定宽度和高度的textarea使用html helper类.我的一些代码如下:

    <div class="editor-label">
        @Html.LabelFor(model => model.MailSubject)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.MailSubject)
        @Html.ValidationMessageFor(model => model.MailSubject)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.MailBody)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.MailBody)
        @Html.ValidationMessageFor(model => model.MailBody)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Content)
    </div>
    <div class="editor-field1">
        @Html.EditorFor(model => model.Content)
        @Html.ValidationMessageFor(model => model.Content)
    </div>
Run Code Online (Sandbox Code Playgroud)

我想知道如何定义editorfor(model.content)的大小(宽度/隐藏)

textarea html-helper asp.net-mvc-4

3
推荐指数
1
解决办法
8148
查看次数

如何使用Html.Helper创建锚点href

可能重复:
如何在Asp.Net MVC循环中呈现纯HTML链接?

我想创造这样的东西

<A href="#section2">Section Two</A>
Run Code Online (Sandbox Code Playgroud)

使用ASP.Net MVC的Html.Helper.怎么做?

anchor html-helper asp.net-mvc-4

3
推荐指数
1
解决办法
4216
查看次数

如何在ASP.NET MVC中创建一个模型绑定的是/否单选按钮,该按钮在页面加载时未选择任何选项?

我的视图模型中有一个可以为null的布尔属性:

public class ViewModel
{
    [Required(ErrorMessage="Please select yes or no")]
    public bool? Completed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望此属性的表单控件是一对单选按钮,在页面加载时最初没有选择任何选项.这是因为我们希望用户有意识地单击一个选项或另一个选项(而不是复选框,这很容易被忽略并保留为默认值).

布尔属性需要是可空的,因为否则在页面加载时已经检查了'NO'选项,正如我上面提到的那样,这不是我们想要的.但是,在视图中使用以下代码:

<label>@Html.RadioButton("Completed", Model.Completed) YES</label>
<label>@Html.RadioButton("Completed", !Model.Completed) NO</label>
Run Code Online (Sandbox Code Playgroud)

导致运行时错误,因为帮助程序尝试绑定到的模型属性为null.

我怎样才能实现这个最初未被选中的状态?

asp.net html-helper model-binding razor asp.net-mvc-3

3
推荐指数
1
解决办法
5390
查看次数

MVC 4 Checkbox/radiobutton readonly

任何人都可以告诉我如何只读取一个复选框而不是禁用?对于文本框,我这样使用它

@Html.TextBoxFor(m => m.FirstName, new { id = "fName", @readonly="readonly" })
Run Code Online (Sandbox Code Playgroud)

现在,我有一个复选框和这样的单选按钮

@Html.CheckBoxFor(m => m.Iseighteen, new { id = "18", @disabled = "disabled" })
@Html.RadioButtonFor(m => m.isMale, new { id = "male",@disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)

禁用的问题是我无法在禁用的字段中获得焦点,而我可以在只读中获得焦点.如果我选项卡然后它选择只读字段,以便屏幕阅读器可以读取它,但如果它被禁用,那么它会跳过所有禁用的内容并转到页脚.我尝试使用readonly复选框和收音机,但它不起作用,让用户编辑.那么,有什么建议吗?

asp.net-mvc html-helper

3
推荐指数
1
解决办法
7657
查看次数

如何在IHtmlHelper <dynamic>上创建扩展方法

本文介绍如何创建扩展方法HtmlHelper<dynamic>,但它似乎不适用于MVC6(我将HtmlHelper更改为IHtmlHelper).

错误是:

'IHtmlHelper<PagedList<Tag>>' does not contain a definition for 'CustomSelectList' and the best extension method overload 'HtmlHelperExtensions.CustomSelectList<Tag>(IHtmlHelper<dynamic>, string, IEnumerable<Tag>, Func<Tag, string>, Func<Tag, string>)' requires a receiver of type 'IHtmlHelper<dynamic>'
Run Code Online (Sandbox Code Playgroud)

这是如何在MVC6中完成的?

html-helper asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
2851
查看次数