@Html.ActionLink(),@Html.Raw(),@Url.Action()等
开新项目时在母版页上发现了一个很长很长很长的字段,
@Html.ActionLink("超链接名字", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
就是这个了,基本内容已经填了上去,但还是做一个记录,一起带上其他一些常见的字段
@Html.ActionLink()
@Html.ActionLink()本身是作为一个超链接使用,并且可以有很多参数,但是前面几个是固定的,@Html.ActionLink()中最少要填写两个参数
第一个参数为超链接名字,第二个参数为对应的控制器方法,在没有第三个参数时,会默认为当前页面作为对应的控制器,
举个例子:@Html.ActionLink("我是超链接", "Index")没有第三个参数,本页面对应的控制器为HomeController,
在页面上会生成的超链接样式为<a href="/Home/Index">我是超链接</a>
第三个参数为控制器名字,此参数可以省略,后面的参数写法都比较统一都为new{};第四个参数为routeValues此参数可以传参(此参数可为一个对象),
例如:@Html.ActionLink("我是超链接", "Index", new{ id = 1 })翻译时会把1带入到url中,但是是否可以传入多个参数还未有尝试,
其他a标签中的属性也可以依次格式添加,
@Html.ActionLink("我是超链接", "Index", new{ id = 1 }, new{ target = "_blank" },new{class="red"})
<a href="/Home/Index/1" target="_blank" class="red">我是超链接</a>
还有一个在别处看到的格式,也一并放上来
Html.ActionLink("linkText","actionName","controlName","protocol","hostName","fragment",routeValues,htmlAttributes)
该重载使用比较少,他可以指定访问的协议,域名还有锚点,如 Html.ActionLink("liuwu","Detail","Products","http",") 可以生成 <a href=">
@Html.Raw()
此方法用于前端接收后端传入数据的转换,
var data = @Html.Raw(ViewBag.Data); var vm = new Vue({ el: '#ready', data: { dt: data, }
@Url.Action()
@Url.Action("action1")
使用指定的操作名称生成操作方法的完全限定 URL
@Url.Action("action1", new {id=1 })
使用指定的操作名称和路由值生成操作方法的完全限定,注:第二个参数为Object类型故可以直接new出一个匿名对象,注意和后面的重载方法对比
@Url.Action("action1","controller1")
使用指定的操作名称和控制器名称生成操作方法的完全限定
@Url.Action("action1", new RouteValueDictionary {{"id",1} })
为指定的操作名称和路由值生成操作方法的完全限定 ,注:第二个参数类型为RouteValueDictionary类型故不可以只是简单的new一个匿名对象
@Url.Action("action1", "controller1", new { id=1})
使用指定的操作名称、控制器名称和路由值生成操作方法的完全限定 URL
@Url.Action("action1", "controller1", new RouteValueDictionary {{"id",1} })
使用指定的操作名称、控制器名称和路由值生成操作方法的完全限定 URL
URL @Url.Action("action1", "controller1", new {id=1},"http或https")
使用指定的操作名称、控制器名称、路由值和要使用的协议生成操作方法的完全限定
Action(String, String, RouteValueDictionary, String, String)
@Url.Action("action1", "controller1", new RouteValueDictionary {{"id",1} }, "http或https", "www.baidu.com")
使用指定的操作名称、控制器名称、路由值、要使用的协议和主机名生成操作方法的完全限定 URL ,注:最后的参数为主机名即域名
附加:
@Url.Action(),@Html.ActionLink(),Html.RenderAction()和@Html.Action()的区别
1. 返回值不同
@Html.Action()返回值为MvcHtmlString。Html.Action比较灵活,可以直接写在页面上,也可以把它赋值给某一变量,处理之后写在页面上。 Html.RenderAction()返回值为void。Html.RenderAction必须写在@{}内,直接由Response对象输出。例:@{ Html.RenderAction("Index", "Import");} @Html.ActionLink()返回值也是MvcHtmlString。 @Url.Action()返回值为string。MvcHtmlString本质上也是string,两者都可以直接现在页面上。
2. 生成的东西不同
@Html.ActionLink("myLink", "CCC", "Import")生成<a href="/Import/CCC">myLink</a> @Url.Action("CCC", "Import")直接生成字符串"/Import/CCC",没有任何tag标签。