在MVC控制器中更改URL导航

时间:2019-02-23 09:58:00

标签: asp.net asp.net-mvc vb.net asp.net-mvc-4

在主页上完成工作时;现在是时候进入剃须刀页面了。
我尝试通过下一个页面控制器loginController来做到这一点。
当我在主控制器中时,为此使用以下sub

Public Sub FlagBtn_Click(ByVal myFlag As String)
        Attributes.envProp._LanguageFlag = myFlag
        Attributes.mvcLogin.Index()
    End Function

程序进入下一个控制器loginController并在该控制器中执行功能:

<Route("Login")>    
      Function Index() As ActionResult
            Return View()
        End Function

通常还必须根据url更改route file

 routes.MapRoute(
        name:="Default",
        url:="{controller}/{action}/{id}",
        defaults:=New With {.controller = "main", .action = "Index", .id = UrlParameter.Optional}
    )

但这不会发生。取而代之的是,url导航保留在Default的{​​{1}}路线上,由于在另一个http://localhost:12345/main {{1 }}。
这里的问题是如何根据我选择的页面更改subfolder导航。
    ADDITION 19/2/19 23:45
控制器http://localhost:12345/Login的调用从url脚本开始:

main

之所以会发生这种情况,是因为我需要为一个属性分配一个值,这可以很好地实现:

ajax

此后,还有一个<script type="text/javascript"> function FlagBtnOnClick(flag) { var flagName = flag; $.ajax({ type: 'GET', url: '@Url.Action("FlagBtn_Click")', dataType: 'json', data: { myFlag: flagName }, }); 脚本:

Public Sub FlagBtn_Click(ByVal myFlag As String) ' As ActionResult
        Attributes.envProp._LanguageFlag = myFlag
    End Sub

使用该脚本,我调用下一个控制器... ajax
我有一个名为Login(); function Login() { $.ajax({ type: 'GET', url: '@Url.Action("../login/Index")', dataType: 'json', }); } 的{​​{1}}:

loginController

这是我尝试更改Sub的尝试。最后在此处调用Index文件。

添加19年2月24日00:06
我注意到,即使我在 Public Sub Index() Response.Redirect("../Views/Login/Index") End Sub 栏中输入地址 url navigation bar
浏览器向我抛出“ 404未找到”错误。太疯狂了,因为该文件在那里并且可以很好地工作。

添加19年2月24日20:20
最后,在詹森先生的协助下,我进行了以下更改,这些更改使我获得了预期的结果,如下所示: 我在Index.aspx处放了这个功能:

url

要小心行

http://localhost:49254/Views/Login/Index

这是绝对需要的,因为对于某些“原因”” mainController的存在使我们的生活更加复杂(出于安全原因)并且具有此属性{{1} }为false
因此,MVC无法理解物理路径或现有文件。
Public Function FlagBtn_Click(ByVal myFlag As String) As JsonResult Dim routes As New RouteCollection With {.RouteExistingFiles = True} Attributes.envProp._LanguageFlag = myFlag Return Json(New With {Key .myUrl = "Login/Index"}, JsonRequestBehavior.AllowGet) End Function 中,我具有以下脚本:

Dim routes As New RouteCollection With {.RouteExistingFiles = True}

我通过Microsoft RouteExistingFiles事件(与第一个事件)一起使用,并在LayoutPage返回时使用新的 <script type="text/javascript"> function FlagBtnOnClick(flag){ var flagName = flag; var call = '@Url.Action("FlagBtn_Click")'; $.ajax({ type: 'GET', url: call, data: { myFlag: flagName }, dataType: 'json', success: function (data) { data.myUrl; SendToController(data.myUrl); }, }); } function SendToController(url) { var innerUrl = '@Url.Action("Index")'; $.ajax({ url: innerUrl, type: 'GET', cache: false, success: function (data) { $("body").html(data); document.location = url; }, }); } </script> 并将其分配给`url浏览器的导航器
当然,我这样称呼下一个“ loginController”:

manage

所以我有...
新页面在屏幕前。
当然,我还面临其他问题。..
当我进入新页面时,在浏览器中按向左箭头,然后它将我带回到第一页。
没关系...正常...现在我单击主页上的按钮以再次进入登录页面...
错误...动作永远不会发生...当我在浏览器中按下向右箭头时,也会发生同样的事情...这不是很棘手的问题...但这是需要解决的问题
我真的希望我能帮助其他面临相同问题的潜在开发人员。
谢谢詹森先生

0 个答案:

没有答案