GVKun编程网logo

MVC 3-HTML Helper

3

对于想了解MVC3-HTMLHelper的读者,本文将提供新的信息,并且为您提供关于6.ASP.NETMVC5.0中的HTMLHelper【HTML帮助类】、Asp.NetMVCKendogridTa

对于想了解MVC 3-HTML Helper的读者,本文将提供新的信息,并且为您提供关于6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】、Asp .Net MVC Kendo grid Tag Helper,基于文本过滤枚举、ASP.NET MVC 3和Razor中的@helper 语法、Asp.net Mvc Html Helper listboxFor click event的有价值信息。

本文目录一览:

MVC 3-HTML Helper

MVC 3-HTML Helper

如何解决MVC 3-HTML Helper

| 我本打算使用声明性HTML帮助器,但后来发现在MVC 3版本中尚未实现它们。 我正在尝试让旧的HTML帮助器与以下代码一起使用:
private static String GenerateSingleOptionHTML(Question q)
{    
    String ret = \\"\\";

    for(int i = 0; i < 3; i++)
    {
        ret += String.Format(\\"<li><input type=\\\\\\"radio\\\\\\" id=\\\\\\"Q\\" + i +\\"\\\\\\" value=\\\\\\"\\" + i + \\"\\\\\\" name=\\\\\\"Q\\" + i +\\"\\\\\\" />\\" + q.Body + \\"</li>\\");
    }

    return ret;
}
忽略html和标记,因为它们可以正常工作。我认为:\\“
  • <输入类型= \\”无线电\\“ id = \\” Q0 \\“值= \\” 0 \\“名称= \\” Q0 \\“ />正文问题1 < / li>
  • 正文问题1
  • 正文问题1 \\“而不是格式化的HTML。 谢谢     

    解决方法

    您需要返回MvcHtmlString的实例。您的输出字符串正在被编码。 rendering1ѭ对象在渲染期间将被视为已编码(我假设您使用的是
    <%: %>
    语法而不是
    <%= %>
    来将HTML注入页面中)。
    return MvcHtmlString.Create(ret);
    
        ,David Neale是正确的,但是在ASP.NET MVC 3中,您实际上应该返回
    HtmlString
    的实例,而不是
    MvcHtmlString
    的实例(尽管两者都可以):
    private static HtmlString GenerateSingleOptionHTML(Question q)
    {    
        String ret = \\"\\";
    
        for(int i = 0; i < 3; i++)
        {
            ret += String.Format(\\"<li><input type=\\\\\\"radio\\\\\\" id=\\\\\\"Q\\" + i 
                +\\"\\\\\\" value=\\\\\\"\\" + i + \\"\\\\\\" name=\\\\\\"Q\\" + i +\\"\\\\\\" />\\" + q.Body + \\"</li>\\");
        }
    
        return new HtmlString(ret);
    }
    
        
  • 6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】

    6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】

             这篇文章,我将带领大家学习HTML Helper。【PS:上一篇-->5.ASP.NET MVC 中的Area【区域】是什么】

    HTML Helpers是用来创建HTML标签进而创建HTML控件的。HTML Helper仅仅是一个返回HTML字符串的方法。ASP.NET MVC 中有三种HTML Helpers

    1.Inline HTML Helper(内联HTML Helper):主要是通过使用Razor语法中的@helper标记来创建。内联HTML Helper仅仅只能在同一个视图中,被重复使用。如果想要在所有的视图中都能使用,有办法可以解决。待会会介绍。

    2.Built-In-HTML Helpers(内置的HTML Helpers):这类的HTML Helper是HtmlHelper类的扩展方法,进一步分为3类:

        2.1 标准HTML Helper【Standard HTML Helpers】:用来创建最常用得HTML标签。

        2.2 强类型的HTML Helpers【Strongly Typed HTML Helpers】:这种是HTML通过Model类的属性生成,使用Lambda表达式来生成HTML。

      2.3 模板化的HTML Helpers 【Templated HTML Helpers】:这种helper生成的HTML取决于Model类的属性。

    3.自定义的HTML helpers【Custom HTML Helpers】:你可以通过使用HtmlHelper扩展方法,或者在工具类中使用静态方法来创建自定义的helper 方法。

     

    1.先来看看内联的HTML Helper

    创建项目HTMLHelpersWithMVC,同时新建一个Home控制器,和Index视图:

     视图页面:

    运行一下:【效果图】

     

     现在假如,我还有一个Test页面,也要显示这个,怎么办呢?我们直接在Test页面写一下看看:

     

     

     看,报错了噢,内联方法只能在声明的视图页面使用噢,怎么办呢?我们可以这样做:

    右键项目创建一个App_Code文件夹:

     

     在App_Code文件夹下,创建一个分布视图:

     

    然后,把刚才在Home控制器Index页面的内联Html Helper方法声明全部弄过来:

    然后运行项目:看:

    咋回事还是报错了,现在Index页面也报错了,哪里出问题了???

    我们这样改:把App_Code文件夹下的视图页面,属性改成嵌入的资源和如果较新则复制

    然后视图页面修改如下:

    然后接着运行看看两个页面的效果:

    看这样就实现了,可以在多个页面实现【内联HTML Helpers】Inline HTML Helpers了。

    2.1 现在来看看,内置的HTML Helpers中的标准 HTML Helpers了

    运行效果如下:

     2.2 现在开始学习 【Built-In HTML Helpers】内置的HTML之强类型HTML Helpers了

    在Models文件夹下创建一个UserInfo类

    为了演示这个强类型的,我新建一个控制器Account,并创建Index视图:

    运行程序:

    2.3 现在看看模板化的HTML Helpers怎么做

    我们在Account控制器中,添加一个Temp方法:并创建Temp视图:

     

     

     

     运行到Temp页面:

     

     发现@Html.EditorForModel()自动为我们创建了控件

    3.最后我们来看看,怎么创建自定义HTML Helpers

    创建一个Custom控制器:

    创建一个CustomClass:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace HTMLHelpersWithMVC.Common
    {
        public static class CustomClass
        {
            /// <summary>
            /// 扩展方法实现方式--创建提交按钮
            /// </summary>
            /// <param name="helper">扩展类对象</param>
            /// <param name="name">按钮名称</param>
            /// <param name="value">按钮值</param>
            /// <returns></returns>
            public static MvcHtmlString CreateSubmit(this HtmlHelper helper, string name, string value)
            {
                var btn = "<input type=''submit'' name=''"+name+"'' value=''"+value+"''/>";
                return new MvcHtmlString(btn);
            }
            /// <summary>
            /// 静态类实现方式--创建提交按钮
            /// </summary>
            /// <param name="name">按钮名称</param>
            /// <param name="value">按钮值</param>
            /// <returns></returns>
            public static MvcHtmlString CreateSubmit(string name, string value)
            {
                var btn = "<input type=''submit'' name=''" + name + "'' value=''" + value + "''/>";
                return new MvcHtmlString(btn);
            }
    
        }
    }

     

    注意这个类CustomClass类必须要在程序根目录下创建,在视图中才能点出来【有智能提示】

    正确的:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace HTMLHelpersWithMVC
    {
        public static class CustomClass
        {
            /// <summary>
            /// 扩展方法实现方式--创建提交按钮
            /// </summary>
            /// <param name="helper">扩展类对象</param>
            /// <param name="name">按钮名称</param>
            /// <param name="value">按钮值</param>
            /// <returns></returns>
            public static MvcHtmlString CreateSubmit(this HtmlHelper helper, string name, string value)
            {
                string btn = "<input type=''submit'' name=''" + name + "'' value=''" + value + "''/>";
                return new MvcHtmlString(btn);
            }
            /// <summary>
            /// 静态类实现方式--创建提交按钮
            /// </summary>
            /// <param name="name">按钮名称</param>
            /// <param name="value">按钮值</param>
            /// <returns></returns>
            public static MvcHtmlString CreateSubmit(string name, string value)
            {
                string btn = "<input type=''submit'' name=''" + name + "'' value=''" + value + "''/>";
                return new MvcHtmlString(btn);
            }
    
        }
    }

    在Custom控制器的Index视图中:

     

     运行程序:

     

     好了,这篇文章到此为止就介绍完了,ASP.NET MVC HTML Helpers了,学会了么?

    Asp .Net MVC Kendo grid Tag Helper,基于文本过滤枚举

    Asp .Net MVC Kendo grid Tag Helper,基于文本过滤枚举

    如何解决Asp .Net MVC Kendo grid Tag Helper,基于文本过滤枚举?

    如何添加过滤器下拉列表来选择要过滤的文本?

    public enum AppointmentType : byte
    {
            [display(ResourceType = typeof(Titles),Name = "OnlineVideoCall")]
            VideoCall = 1
    }
    

    在视图模型上:

    public string AppointmentStringType {get;set;}
    public AppointmentType AppointmentType{get;set;}
    

    在后端:

    _db.Appointments.Select(r => new Appointmentviewmodel(){
        AppointmentStringType = r.AppointmentType.GetdisplayName(),AppointmentType = r.AppointmentType
    });
    

    在 .cshtml 上:

       <column field="@nameof(Appointmentviewmodel.AppointmentType)" title="@Captions.AppointmentType" template="#= data.AppointmentStringType #" width="100"/>
    

    解决方法

    暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

    如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

    小编邮箱:dio#foxmail.com (将#修改为@)

    ASP.NET MVC 3和Razor中的@helper 语法

    ASP.NET MVC 3和Razor中的@helper 语法

     

    ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外)。当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速、通畅的编码工作流。

    与大部分模板的语法不同,在Razor的帮助下,您不需要中断代码编写,仅仅为了在HTML中标注服务器端代码块的开始和结束。代码分析器足够聪明,它能够从你的代码里推断出是否为服务器端代码。这种更加简洁、富有表现力的语法更加干净,输入也更快速,有趣。

    今天的博文涵盖了Razor的一项很多人都不知道的功能——利用@helper语法定义可重用的帮助器方法。

    简单的 @helper 方法应用场景

    Razor中的@helper语法让您能够轻松创建可重用的帮助器方法,此方法可以在您的视图模板中封装输出功能。他们使代码能更好地重用,也使代码更具有可读性。让我们看一个超级简单的应用场景,它展示了@helper语法是怎样被使用的。

    在我们定义@helper方法之前的代码

    让我们看一个简单的产品列表应用场景。在此场景中,我们列出产品明细并输出产品的价格或是单词“免费!”——如果这个产品不花费任何成本的话:

    以上代码非常直截了当,而且Razor的语法使得在HTML里能简单地集成服务器端C#代码。

    然而,一个有点混乱的地方是价格的if/else逻辑。我们可能在站点的其他位置输出价格(或者在同一页面上),而复制以上逻辑很容易出错且难以维护。类似的应用场景是使用@helper语法提取和重构成为帮助器方法的首选考虑。

    使用@helper语法重构以上样例

    让我们提取价格输出逻辑,并将其封装在一个我们将命名为“DisplayPrice”的帮助器方法内。我们可以通过重写以下代码样例来实现此操作:

    我们已经使用上述@helper语法来定义名为“DisplayPrice”的可重用帮助器方法。就像标准C#/VB方法一样,它可以包含任意数量的参数(您也可以定义参数为空或可选参数)。不过,与标准C#/VB方法不同的是,@helper方法可以同时包含内容和代码并支持其中的完整Razor语法——这使得定义和封装呈现/格式化帮助器方法变得非常简单。

    您可以像调用一个标准的C#或VB方法一样,调用@helper方法:

    当调用该方法时,Visual Studio会提供智能感知代码:

    在多视图模式中重用@helper

    在上面的实例中,我们在相同的视图模板中将@helper方法定义为调用它的代码。或者,我们可以将@helper方法定义在视图模板外,并保证其在项目的所有视图模板中可重复使用。

    您可以在.cshtml/.vbhtml保存我们的@helper方法,并把这个文件放在项目根目录下创建的\App_Code目录下例如,我在\App_Code文件夹中创建了一个“ScottGu.cshtml”文件,并且在文件中定义了2个单独的帮助器方法(在每个文件中您可以有任意数量的帮助器方法):

    一旦我们的帮助器定义在应用程序级别,我们就可以在应用程序的任何视图模板中使用它们。

    在上面的\App_Code文件夹中的ScottGu.cshtml会逻辑编译为一个称为“ScottGu”的类。这个类中包含了“DisplayPrice” 和 “AnotherHelper”的静态成员。我们可以使用以下代码重写前面的示例来调用它:

    当像如下方法调用应用程序级别帮助器时,Visual Studio将会提供智能感知代码:

    5月15日更新:有一些人指出的一个问题是,当一个@helper保存在\app_code目录中时,默认情况下您不能访问其中的ASP.NET MVC Html帮助器方法。(例如Html.ActionLink(), Html.TextBox()等等)。而当它们定义在与视图相同的文件夹中,您是可以访问内置HTML帮助器方法的。当帮助器位于\app_code目录下时,确实当下是不支持内置HTML帮助器方法的访问的——我们将在下次发布中添加此功能。Paul Stovall有一个很好的帮助器类,您可以同时访问和使用它和您在\app_code目录下定义的@helper方法中的内置Html方法。请从这里了解更多关于如何使用的信息。

    总结

    Razor的@helper语法提供了一种简便的方法来将呈现功能封装到帮助方法中去。您可以在单个视图模板或整个项目的所有视图模板中重用它。

    您可以使用此功能来编写更加干净、更易维护的代码。

    7

    0

    标签: ASP.NET MVC 3RazorMVC

    Asp.net Mvc Html Helper listboxFor click event

    Asp.net Mvc Html Helper listboxFor click event

    如何解决Asp.net Mvc Html Helper listboxFor click event

    当用户在 asp.mvc 5 中单击时如何调用 onclick。下面的代码不起作用

    1. @Html.ListBoxFor(m => Model.DepDashTaskLists[i].BusinessRuleQuestion1Answer,new MultiSelectList(slh.GetRegistrationAnswerLookup(Model.DepDashTaskLists[i].BusinessRuleQuestion1),"Value","Text",Model.DepDashTaskLists[i].BusinessRuleAnswers),new { @onclick="somefunction()",@id = "RuleQuestionListBoxAnswer",@class = "listBox" })

    解决方法

    有一些 javascript 监听 listbox 上的点击事件并获取项目文本并设置为另一个文本框的值

    1. @Html.ListBoxFor(x => x.ItemId,new MultiSelectList(Model.ListOfItems,"Text","Value",Model.ItemId),new { size = 6,id = "itemsList",OnChange = "showText" })
    2. $(function(){
    3. $("#ItemId option").click(function () {
    4. var _this = $(this);
    5. $("#txtItem").val($(_this).text());
    6. });
    7. });

    工作样本:http://jsfiddle.net/w4sxw/

    今天关于MVC 3-HTML Helper的介绍到此结束,谢谢您的阅读,有关6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】、Asp .Net MVC Kendo grid Tag Helper,基于文本过滤枚举、ASP.NET MVC 3和Razor中的@helper 语法、Asp.net Mvc Html Helper listboxFor click event等更多相关知识的信息可以在本站进行查询。

    本文标签: