ASP.NET MVC之视图生成URL

网友投稿 1687 2022-08-31

ASP.NET MVC之视图生成URL

ASP.NET MVC之视图生成URL

在MVC的Web应用程序中,我们经常会出现这样的操作,从一个视图跳转到另外一个视图,大部分情况下都是通过链接来实现,当然这是一种非常不错的选择,为什么不说这是最好的选择呢?因为它也有其弊端,我们看看如下:

这是一个链接

@Html.ActionLink 来进行,利用它的第四个重载方法,如:

@Html.ActionLink("这是一个跳转到Action链接","Index","Home")

第一个参数为链接文本,第二个为控制器上对应的方法Index,最后一个则是控制器Home,最终渲染成html则是:

这是一个跳转到Action链接

到了这里你觉得是不是@Html.ActionLink的作用也就是如此了,是不是觉得这个来自HtmlHelper的扩展方法也不过如此呢?

@Html.ActionLink探讨(一)

我们创建项目并创建如下一个Test控制器,并在该控制器上定义如下两个方法:

public class TestController : Controller { public ActionResult Index() { ViewBag.Controller = "Test"; ViewBag.Action = "Index"; return View("DisplayActionView"); } public ActionResult MyBlog(string id = "MyBlogId") { ViewBag.Controller = "Test"; ViewBag.Action = "MyBlog"; ViewBag.CustomVariable = id; return View(); } }

看了上述定义的Index方法返回的视图是DisplayActionView视图,那我们是不是应该在该控制器下做出如下定义呢:

public ActionResult DisplayActionView() { return View(); }

然后在该视图中显示一下我们已经跳转到该视图了呢,如下:

DisplayActionView

结果如下:

我们确实要创建DisplayActionView视图只是我们不创建该Action方法,我们直接在Views文件夹下的Shared文件夹下定义该视图。如下:

Controller Invoked: @ViewBag.Controller

Action Invoked: @ViewBag.Action

@Html.ActionLink("this is generate url dynamic", "MyBlog")

当然在上述Test控制器里还有个MyBlog方法未定义视图,我们定义视图内容如下:

Controller processed the URL: @ViewBag.Controller

Controller action invoked: @ViewBag.Action

The custom variable is: @ViewBag.CustomVariable

最后我们进行下路由配置:

routes.MapRoute("CustomRoute", "{controller}/{action}/{id}", new { controller = "Test", action = "Index", id = UrlParameter.Optional });

下面我们运行下程序看看其结果,通过运行Test下的Index方法然后直接跳转到DisplayActionView,如下:

@Html.ActionLink("this is generate url dynamic", "MyBlog")

我们用到HtmlHelper的扩展方法ActionLink,上述我们是重载了第一个方法,第一个参数是链接文本,而第二个则是Action名称,但是我们并未给出其控制器名称即控制器未知。我们把鼠标放在该链接上看看,如下:

@Html.ActionLink 的作用了,我们回归起初的话题我们利用 这是一个链接 将控制器写死,当我们删除该控制器那后果可想而知,当我们通过上述利用@Html.ActionLink来实现时则是通过控制器来动态生成该链接,即使我们删除控制器创建一个新的控制器该链接会动态的重新生成,这才是在MVC中要给出@Html.ActionLink的最后渲染成a标签的真正作用所在

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ERP商品管理业务逻辑封装(三十四)
下一篇:Go语言之Once(go语言是什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~