2012-04-03 5 views
0

У меня есть страница (a.aspx), к которой Im навигации из двух разных страниц (т.е. есть ссылка в этих двух страницах, где он переходит к a.aspx)Альтернативы для ViewData и QueryString

отличить от какая страница i была перенесена в a.aspx, я использовал приведенный ниже код.

прошли Querystrings (В1, В2) к целевой странице, как показано ниже

Html.ActionLink("test" "Testing", new { Controller = "Stats",prev="B1"},new { @class = "link",target="_self" }) 
Html.ActionLink("test" "Testing", new { Controller = "Stats",prev="B2"},new { @class = "link",target="_self" }) 

и в действии контроллера целевой страницы я использовал ниже код

ViewData["prev"] = Request.QueryString["prev"].ToString(); 

и им с помощью этого ViewData на целевой странице, то есть a.aspx. Это работает нормально. Im abit неохотно использует Query.string и ViewData для вышеуказанного требования. Предлагайте любой другой альтернативный подход для него.

ответ

0

Вы можете использовать это,

Получить имя контроллера

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue 

Получить имя действия

@ViewContext.Controller.ValueProvider.GetValue("action").RawValue 

Я обнаружил, что here.

0

Почему бы не перейти к двум отдельным действиям, которые возвращают один и тот же вид? Затем верните модель в представление, которое укажет на страницу «от». Вы узнаете, с какой страницы вы пришли, из-за чего действие попало. Это чище, гораздо менее сложно и проще в обслуживании, чем пытаться обойти подобные вещи в querystring, viewdata, viewbag и т. Д. Говоря это, если вам нужно много чего делать, создавая отдельные действия каждый раз не являются реальными

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