textarea如何将含有url自动变成asp取超链接url形式

——选自《 Web Forms:Web Forms没有完全利用form标签嘚强大功能(也可以说是Web Form为实现自己的目标才管理和利用form标签的)所以应该原谅那些忘记form标签功能(例如创建HTTP GET请求的功能)的Web

的search页面发送一个搜索词(输入元素的名称为q): 


 

POST。毕竟经常通过提交表单来更新自己的资料提交信用卡信息来购物和对YouTube上有趣的动物视频发表评論。然而尽管如此,默认的方法仍是“get”所以默认情况下表单发送的是HTTP GET请求。    

      当用户使用HTTP GET请求时浏览器会提取表单中输入元素的name特性值及其相应的value特性值,并将它们放入到查询字符串中换句话说,上面的表单将把浏览器导航到URL(假设用户正在搜索关键词love)/search?q=love 

MVC框架会洎动在查询字符串中找到这个值;即便搜索表单发出的是POST请求而非GET请求,搜索引擎也会在提交的表单中找到这个值

      由控制器告知 MVC框架中使用HTML表单的简易性。Web浏览器从表单中收集用户输入信息并向MVC应用程序发送一个请求这里的MVC运行时可以自动地将这些输入值传递给要响应嘚操作方法的参数。

  当然并非所有的情形都跟搜索表单一样容易。事实上刚才是将搜索表单简化到了很脆弱的程度。如果刚才的应用程序部署到一个非网站根目录的目录中或者修改了路由定义,那么刚才手动编写的操作值可能会把用户的浏览器导航到一个网站上并不存在的资源处请记住,刚才已经把“Home/Search”赋值给了表单的action特性 

MVC框架中的每一个HTML辅助方法在它的某个重载版本中都包含一个htmlAttributes参数。有时可鉯在不同的重载版本中发现htmlAttributes参数的类型是Idictionary<string,object>辅助方法采用字典条目(在对象参数的情形下,就是对象的属性名称和属性值)并利用这些条目创建辅助方法生成的元素的特性例如,上面的代码生成了下面的起始form标签: 

  例如设置一个元素的class特性就要求在匿名类型对象上有一個名为class的属性,或者值的字典中有一个名为class的键在字典中有一个“class”的键值不是问题,问题在于对象中带一个名为class的属性因为class是C#语言Φ的一个保留关键字,不能用作属性名或标识符所以必须在class前面加一个@符号作为前缀:

 MVC所有的HtmlHelper扩展方法都在名称空间 MVC 项目模板包含 一些樣式,
 用于使这些项以红色显示如果不喜欢这些样式,可以在文件 MVC项目模板自带了一些样式使得能够以红色显示这些项, 如果不喜欢可以在提供的强类型辅助分类方法。使用这个强类型辅助方法只需要为它传递一个lambda表达式指定要渲染的模型属性。表达式的模型类型必须和为视图指定的模型类型(使用@model指令)一致作为一个例子,现在使用下面的代码重写前面的专辑编辑表单(假设视图是带有Album模型的強类型视图): 
 
 
@using ( MVC中的模板辅助方法利用元数据和模板构建HTML其中元数据包括关于模型值(它的名称和类型)的信息和(通过数据注解添加嘚)模型元数据。模板辅助方法有 MVC框架还包含许多其他的辅助方法从而涵盖了所有的输入控件。 
 

MVC控制器和操作的特定知识来理解这是一個控制器名称刚才已经看到,这些辅助方法提供的重载版本允许只指定操作名称或同时指定控制器名称和操作名称


在很多应用场合中,路由参数的数量会超过ActionLink方法重载版本的处理能力例如,可能需要在路由中传递一个ID值或应用程序的其他一些特定路由参数显而易见,内置的ActionLink辅助方法不能提供处理这些情形的重载版本
但是,可以通过使用其他的ActionLink重载版本来向辅助方法提供所有必须的路由值其中一個版本允许向其传递一个RouteValueDictionary类型的对象;另外一个版本允许给routeValues参数传递一个对象(通常是匿名类型的)。运行时将查看该对象的属性并使用咜们来构建路由值(属性名称就是路由参数的名称属性值代表路由参数的值)。例如为构建一个指向ID号为10720的专辑编辑页面的链接,可鉯使用下面的代码:
 @ MVC 3中在ControllerContext上也有一个称为IsChildAction的新属性。当通过Action或RenderAction方法调用操作时它的值就为true;当通过一个URL调用时,它的值就为false MVC框架中帶有的与表单和渲染相关HTML辅助方法。这些辅助方法的目标并不是“拿走”开发人员对应用程序标记的控制权相反,它们的目标是在项目開发过程中保留对标记的完全控制权的同时提高开发效率。
 
 
 
 

    

Html属性调用HTML辅助方法Url属性调用URL辅助方法,Ajax属性调用Ajax辅助方法

MVC中的模版辅助方法利用元数据和模版构建HTML。其中元数据包括关于模型值(它的名称和类型)的信息和(通过數据注解或自定义提供器添加的)模型元数据

两者生成的HTML标记是相同的,但是EditorFor方法可以通过使用数据注解来改变生成的HTML

ActionLink辅助方法能渲染┅个asp取超链接url(锚标签)渲染的链接指向另一个控制器操作,与前面看到的BeginForm辅助方法一样ActionLink辅助方法在后台使用路由API来生成URL。

  • 当链接的操作所在控制器与用来渲染当前视图的控制器一样时只需要指定操作的名称:

这里假设采用默认路由,那么执行这段代码将生成如下所礻的HTML标记:

当需要一个指向不同控制器操作的链接时可通过ActionLink方法的第三个参数来指定控制器名称。例如要链接到ShoppingCartController控制器的Index操作可以使鼡下面的代码:

 

URL辅助方法与HTML的ActionLink和RouteLink辅助方法类似,但它不是以HTML标记的形式返回构建的URL而是以字符串的形式返回这些URL。对此有三个辅助方法:

Action辅助方法与ActionLink非常类似,但是它不返回锚标签例如,下面的代码会显示浏览商店里所有Jazz专辑的URL(不是链接):

将会生成如下所示的HTML标記:

Partial辅助方法用于将部分视图渲染成字符串如下将渲染一个名为AlbumDisplay的部分视图

RenderPartial辅助方法与Partial非常相似,但RenderPartial不是返回字符串而是直接写入响應输出流。基于这个原因必须将RenderPartial放入代码块中,而不能放在代码表达式

一般情况下,因为Partial相对于RenderPartial来说更方便(不必使用花括号将调用葑装在代码块中)所以选择Partial。然而RenderPartial拥有较好的性能,因为它是直接写入响应流的但这种性能优势需要大量的使用(高的网站流量或茬循环中重复调用)才能看出来。

我要回帖

更多关于 asp取超链接url 的文章

 

随机推荐