zoukankan      html  css  js  c++  java
  • asp.ner mvc3表单和HTML辅助方法(二)

      上一讲我们说到用form标签访问mvc控制器以及如何正确显示视图结果,今天给大家介绍下mvc中的HTML辅助方法,以及如何用辅助方法来重写上次的form

      上一讲中的form表单

    <form action="control/action" method="get">
    
      <input name="q" type="text">
    
      <input type="submit" value="Search">
    
    </form>

      既然我们使用了mvc我们就应该尽量使用他的特性用Html辅助方法代劳上面这个form表单

    @using (Html.BeginForm("Search", "Home", FormMethod.Get))
    { 
        <input type="text"  name="q" />
    
      <input type="submit" value="Search" />
    }

      BeginForm辅助方法询问路由引擎如何找到HomeController控制器的Search操作(也就是方法)在后台它使用RouteTable中Routes属性上名为GetVirtualPath的方法.

      HTML辅助方法

      HTML辅助方法是可以通过视图的HTML属性调用的方法.

      

    @Html.TextArea("text","hello <br /> world");

      Textarea 辅助方法中第二个参数是要渲染的值.上面的例子是向它的值中嵌入一些Html标记,但TextArea辅助方法将产生下面的标记:

      

    <textarea cols="20" id="text" name="text" rows="2">
        hello &lt;br / &gt; world
    </textarea>

      输出值是经过HTML编码的.

      在保护代码的同时,辅助方法也给出了所需程度的控制.BeginForm辅助方法的另外一个重载版本

    @using (Html.BeginForm("Search", "Home", FormMethod.Get,
          new { target = "_blank"}  ))
    { 
        <input type="text"  name="q" />
    
      <input type="submit" value="Search" />
    }    

      在上面这段代码中,向BeginForm方法的htmlAttributes参数传递了一个匿名类型的对象.基本上所有的asp.net mvc 框架中的每一个HTML辅助方法在它的某个重载版本中都包含一个htmlAttributes参数.也有时可以再不同的重载版本中发现htmlAttributes参数类型是IDictionary<string,object>.就是(名/值)

    上面代码会产生这样的html结果

    <form action="/Home/Search" method="get" target="_blank">

      可以看到已经使用了 htmlAttributes 参数设置了 target="_blank" .在这里还要特别注意下设置class

    的时候,因为class是C#语言中的保留关键字,不能用作属性标识符,所以得这样

    @using (Html.BeginForm("Search", "Home", FormMethod.Get,
          new { target = "_blank" , @class="editForm"}  ))
    { 
        <input type="text"  name="q" />
    
      <input type="submit" value="Search" />
    }    

      在class前面加一个@符号即可,还有一个问题是在设置属性时带有连字符的名称(data-value),带有连字符的C#属性名是无效的,但所有的HTML辅助方法在渲染HTML时会将属性名中的下划线转换为连字符.

    @using (Html.BeginForm("Search", "Home", FormMethod.Get,
          new { target = "_blank" , @class="editForm", data_validatable="true"}  ))
    { 
        <input type="text"  name="q" />
    
      <input type="submit" value="Search" />
    }    

      将会生成如下HTML代码

    <form action="/Home/Search" class="editForm" data-validatatable="true" method="get" target="_blank">

      今天就到这里,谢谢大家

  • 相关阅读:
    使用纯 CSS 实现响应式的图片显示效果
    10个帮助你快速调试和排错的小技巧
    《JavaScript 实战》:JavaScript 实现拖拽缩放效果
    周末发福利了!26个免费的HTML5模版
    程序人生的四个象限和两条主线
    50份简历设计,助你找到梦寐以求的工作
    6个重构方法可帮你提升 80% 的代码质量
    开发者必须收藏的6款源码搜索引擎
    常用的20个强大的 Sublime Text 插件
    你知道吗?.NET Framework 4.5 五个很棒的特性
  • 原文地址:https://www.cnblogs.com/haidao/p/3219784.html
Copyright © 2011-2022 走看看