标签: html-helper

我什么时候应该使用HtmlHelper扩展方法?

我越来越多地发现我的ASP.NET MVC视图需要一些逻辑来执行布局的情况.这些例程在我的模型或控制器中都没有.我有3个选择:

  1. 在视图中内联编写大量<%%>.
  2. 在许多部分视图中少写<%%>.
  3. 编写HtmlHelper扩展方法.

这是让我困惑的最后一个选择.如果逻辑只针对那个视图,那么可以这样做吗?扩展名对每个其他视图的Html对象都是"可见的",并且永远不需要它.

有什么建议?

asp.net-mvc extension-methods html-helper

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

我的HtmlHelper出了什么问题?

我在Helper类中创建了一个Html扩展方法,但是我无法让它工作.我已经实现了它,就像在不同的教程上看到的那样.

我的MenuItemHelper静态类:

public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName)
    {
        var currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
        var currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

        var sb = new StringBuilder();

        if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
            sb.Append("<li class=\"selected\">");
        else
            sb.Append("<li>");

        sb.Append(helper.ActionLink(linkText, actionName, controllerName));
        sb.Append("</li>");
        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

导入命名空间

<%@ Import Namespace="MYAPP.Web.App.Helpers" %>
Run Code Online (Sandbox Code Playgroud)

在我的master.page上实现

<%= Html.MenuItem("TEST LINK", "About", "Site") %> 
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息:

找不到方法:'System.String System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper,System.String,System.String,System.String)

编辑: 似乎问题是应用程序名称.该文件夹名为MYAPP-MVC.Web,但在类中它转换为MYAPP_MVC.Web

我只是尝试了一个新的应用程序,它的工作原理

asp.net-mvc html-helper

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

使用asp.net mvc自动完成下拉列表

我在CreateDocumentTemplate ciew中有一个下拉列表,
<%=Html.DropDownList("Part", (SelectList)ViewData["Part"])%>
它是从数据库中填充的.我希望这个下拉列表能够自动完成.我怎么能搞清楚这个?

asp.net-mvc jquery html-helper jquery-plugins

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

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

在razor html helper中传递data-icon属性

我想使用asp.net mvc 3 razor html helper跟随html代码:

<input type="text" .... .   placeholder="Login" data-icon="user" />
Run Code Online (Sandbox Code Playgroud)

我试过这个:

@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", data-icon = "user" })
Run Code Online (Sandbox Code Playgroud)

要么

@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", @data-icon = "user" })
Run Code Online (Sandbox Code Playgroud)

显示错误:

Invalid anonymous type members declaration.
Run Code Online (Sandbox Code Playgroud)

这可能是由于数据图标中的破折号未被视为属性.如何在文本框字段中添加数据图标属性.

html-helper razor asp.net-mvc-3

3
推荐指数
2
解决办法
5930
查看次数

在Web.Config中添加HtmlHelper NameSpace不起作用

问题1:

大家好我已经开始学习ASP.NET MVC,我已经做了一个简单的扩展方法,就像这样

namespace MvcTestz  //Project is also named as "MvcTestz"
{
  public static class SubmitButtonHelper //extension method.
  {
    public static string SubmitButton(this HtmlHelper helper,string buttonText)
    {
        return string.Format("<input type=\"submit\" value=\"{0}\">",buttonText);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我添加了Custom HtmlHelper的命名空间Web.Config,就像这样

  <namespaces>
    <!--other namespaces-->
    <add namespace="MvcTestz"/>
    <!--other namespaces-->
  </namespaces>
Run Code Online (Sandbox Code Playgroud)

所以我可以在剃刀View中使用intellisense,但它自定义Helper并没有出现在一个View中(Home/View/About.cshtml).

在此输入图像描述

所以在另一个视图中(Home/View/Index.cshtml)我添加了namespace by @using MvcTestz;statement.

问题2:

在WebApp执行主页(Home/View/Index.cshtml)显示输入按钮文本而不将其呈现为HTML.

在此输入图像描述 在关于页面(Home/View/About.cshtml)服务器生成错误.(点击放大) 在此输入图像描述

更新:

  1. Intellisense问题解决了,我不得不编辑View Directory.SOLVED中的Web.Config.
  2. HtmlString 如果我想渲染一个Html按钮,应该使用.SOLVED.

asp.net asp.net-mvc html-helper visual-studio-2010 razor

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

我应该使用Html.Label助手吗?

在MVC项目中,我使用HTML.Label助手,如下所示: -

@Html.Label("FirstName", "First Name", New With {.class = "FieldLabel"})
Run Code Online (Sandbox Code Playgroud)

哪个输出

<label class="FieldLabel" for="FirstName">First Name</label>
Run Code Online (Sandbox Code Playgroud)

我也有这个标签的相应输入.

这可能听起来像一个愚蠢的问题,但如果我只是将直接输出输入到我的视图而不是使用HTML帮助器,那么绝对没有任何区别吗?那么为标签使用HTML帮助器有什么优点/缺点吗?

asp.net-mvc html-helper

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

ASP.NET MVC Html Helper

我尝试创建一些Html Helpers,它将有一个开始标记和结束标记,其中包含其他内容,如Html.BeginForm.例如在Razor中我们可以使用Html.BeginForm帮助器,它具有以下语法:

    @using (Html.BeginForm())
    {
    }
Run Code Online (Sandbox Code Playgroud)

此代码将包含a和中的大括号内容.我用内容解决打开和关闭标记的唯一方法是使用两个html助手.我定义了两个html助手:

    public static MvcHtmlString StartForm(this System.Web.Mvc.HtmlHelper helper)
    {
        return new MvcHtmlString("<form>");
    }
    public static MvcHtmlString EndForm(this System.Web.Mvc.HtmlHelper helper)
    {
        return new MvcHtmlString("</form>");
    }
Run Code Online (Sandbox Code Playgroud)

然后我使用以下示例使用帮助程序:

    @Html.StartForm()
    contents
    @Html.EndForm()
Run Code Online (Sandbox Code Playgroud)

但我希望能够制作一个html助手,它在视图中具有以下格式:

    @using (Html.MyForm())
    {
            <text>contents</text>
    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题,因为我甚至不知道如何搜索它.

asp.net-mvc extension-methods html-helper

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

如何在App_Code文件夹中的Razor视图中使用Url.Action

如何在App_Code文件夹的Razor助手中使用Url.Action()?

我试过根据为什么我不能在App_Code文件夹中的剃刀助手视图文件中使用Html.RenderPartial?

@using System.Web.Mvc.Html
@helper Tabel(System.Web.Mvc.HtmlHelper html)
{ 
    @Html.Raw(Url.Action("Index", "Home"))
}
Run Code Online (Sandbox Code Playgroud)

但得到了编译错误

CS0103:当前上下文中不存在名称"Url"

使用ASP.NET MVC4和jquery.

asp.net-mvc html-helper razor asp.net-mvc-4 razor-2

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

带有Html Helper的条件html属性

我正在使用Html助手创建一个复选框.在某些情况下,我想将该disabled属性添加到htmlAttribute对象中.我有以下代码:

@if (Model.IsAuthorized)
{
    @Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class" })
}
else
{
    @Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class", @disabled = "disabled" })
}
Run Code Online (Sandbox Code Playgroud)

我想让这段代码更简洁.有没有办法在一行中有条件地添加某些html属性/没有块条件?

c# asp.net-mvc html-helper razor

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