0

Я новичок в ASP.NET MVC и пытаюсь изучить новые вещи во время игры со следующим сценарием, но не получил его работу.Возможно ли иметь параметр url с постоянным значением через приложение ASP.NET MVC?

На самом деле, я пытаюсь сохранить постоянный параметр значения в URL-адресе для каждого запроса. Нечто подобное, когда мы имеем значение сеанса в URL, после использования <sessionState cookieless="true"/> в файле Web.config, и он начинает показывать значение сеанса в этом формате

http://localhost:49961/(S(swl0ancynhWw2103jxm4ydwf))/Customer/Home

Но я пытаюсь иметь постоянный параметр добавляется в конец URL для каждого запроса, как следующая ссылка

http://localhost:49961/Customer/Home?constantVal=12345

предполагается, что этот параметр, чтобы оставаться в URL, ли я с помощью любого HttpGet или HttpPost метод.

До сих пор я пытался переписывания URL, используя Application_BeginRequest() внутри Global.asax.cs файла в следующем виде:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    // Suppose Request.FilePath = /Customer/Home/UploadFile 
    // Unable to use "?constantVal" as required 
    Context.RewritePath(Request.FilePath + "/12345"); 
} 

Действие Метод:

public ActionResult UploadFile(string id = null) 
{ 
    return View(); 
} 

В приведенном выше способом , хотя я могу получить значение для id = "12345" в UploadFile Действие, но ни он не отображается в URL-адресе нигде, либо он также требует, чтобы каждый HttpGet встретил hod иметь прием id параметр.

Всегда приятно делать что-то сумасшедшее, чтобы вы могли лучше понять систему. :)

ответ

0

Возможно ли иметь параметр url с постоянным значением через приложение ASP.NET MVC?

Да.

Однако, ваш пример (http://localhost:49961/Customer/Home?constantVal=12345) не будет работать, потому что Route класс полностью игнорирует строки запроса значения. Однако можно отметить extend routing to make it query string aware.

По умолчанию значения маршрута являются automatically reused from the current request, так что если вы поставите значение там, он просто будет «держаться» от одного запроса к другому, если все URL-адреса на сайте построены с (или функцией UrlHelper, которая использует UrlHelper, например ActionLink). См. ASP.NET MVC 5 culture in route and url для примера размещения культуры в URL-адрес, который автоматически сохраняет его между запросами.

Сказанное, используя RewritePath, в этом контексте не имеет никакого смысла. RewritePath изменяет URL-адрес , который обработчик HTTP видит, а не URL-адрес в браузере, который видит пользователь. На самом деле, поскольку у нас есть маршрутизация для сопоставления запроса непосредственно на действие контроллера, использование RewritePath в MVC действительно не имеет смысла. Чтобы изменить URL-адрес, который видит пользователь, вам необходимо выполнить перенаправление 302 или 301.См. How to change route to username after logged in? для примера перенаправления для добавления значения в URL автоматически при определенном условии, которое аналогично вашему прецеденту.

+0

Thanks @ NightOwl888, для показа правильного пути для перемещения. Вы повсюду в ссылках. Продолжайте делиться своими знаниями :) –

Смежные вопросы