Пока я заканчиваю свою работу на главной странице;Пришло время перейти к странице бритвы гнезда.
Я пытаюсь сделать это со следующей страницы контроллера 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
, который http://localhost:12345/main
, и, конечно, следующая страница не может быть отображена, потому что находится в другом subfolder
http://localhost:12345/Login
.
Вопрос здеськак изменить навигацию url
, в соответствии со страницей, которую я выбрал.
ДОПОЛНЕНИЕ 23/2/19 23: 45
Вызов для контроллера main
начинается с ajax
script:
<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
script:
Login();
function Login() {
$.ajax({
type: 'GET',
url: '@Url.Action("../login/Index")',
dataType: 'json',
});
}
С этим сценарием я вызываю следующий контроллер ... loginController
И у меня есть Sub
с именем Index
:
Public Sub Index()
Response.Redirect("../Views/Login/Index")
End Sub
Это моя попытка изменить url navigation bar
.И, наконец, вызвать файл Index.aspx
.
ДОПОЛНЕНИЕ 24/2/19 00: 06
Я заметил, что даже я набираю адрес вurl
bar http://localhost:49254/Views/Login/Index
Браузер выдал мне ошибку «404 Not Found».это безумие, потому что файл есть и работает очень хорошо.
ДОПОЛНЕНИЕ 24/2/19 20: 20
Наконец, с помощью г-на Джейсена Iвнесли следующие изменения, которые привели меня к желаемому результату следующим образом: На mainController
я поставил эту функцию:
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
в false
Таким образом, MVCне понимает ни физических путей, ни существующих файлов.
В 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>
, с которыми я manage
* button_click
событие (с первым) и по возвращении из mainController
я беру новый physical path
и присваиваю его `url навигатору моего браузера
И, конечно, я вызываю следующий 'loginController' так:
Public Function Index() As ActionResult
Dim routes As New RouteCollection With {.RouteExistingFiles = True}
Return View()
End Function
Итак, вот оно у меня ...
Новая страница перед моим экраном.
Конечно, я сталкиваюсь с другими проблемами .. как ..
Пока я на новой странице ... и я нажимаю стрелку влево в браузере, он отправляет меня обратно на первую страницу
ЭтоОК ... нормально ... Теперь я нажимаю кнопку на моей главной странице, чтобы перейти (снова) на страницу входа ...
Ошибка ... действие никогда не происходит ... То же самое происходиткогда я нажимаю стрелку вправо в своем браузере ... Это не такая серьезная проблема ... но это проблема, которая должна решить ее
Я действительно надеюсь, что помогу любому другому потенциальному разработчику, который сталкивается с такими же проблемами.
Спасибо, господин Джейсен