@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标签。

原文地址:https://www.cnblogs.com/wanghuanl/p/14154062.html