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