Ваш вопрос по сути такой же, как этот: Handlebars.js - доступ к значению объекта с помощью переменного ключа
Единственная дополнительная деталь - вам нужно использовать [ 117] Подвыражения на руле для выполнения двух поисков (сначала из @key
; затем из 'name'
).
Подвыражение позволит вам найти значение @key
на ../a
и передать его во второй поиск значения 'name'
в результате первого поиска.
Соответствующей строкой в вашем шаблоне становится:
{{lookup (lookup ../a @key) 'name'}}
Вот вам скрипка: https://jsfiddle.net/76484/b0puy52n/
В случае, если Вы используете FormsAuthentication, когда ASP.NET перенаправляет пользователя к странице входа в систему, URL выглядит примерно так:
http://www.mysite.com/Login?ReturnUrl=/Something
Атрибут действия формы входа в систему должен иметь тот же параметр ReturnUrl (или, как скрытый введено или как часть URL) так, чтобы FormsAuthentication мог взять его и перенаправление, например.
<form action="Login?ReturnUrl=<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"]) %>"></form>
или
<form><input type="hidden" name="ReturnUrl" id="ReturnUrl" value="<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"])"%> /></form>
Необходимо всегда удостоверяться, что относящийся URL в домене и вероятной строке, из которой они могли происходить. Иначе это имеет потенциал того, чтобы быть используемым с флэш-памятью или другими клиентскими технологиями, чтобы сделать вещи как разделение ответа или другие нападения, известные и неизвестные.
Ссылающийся домен HTTP является вводом данных пользователем, и он должен быть проверен как любой другой.
То, что я сделал для достижения того результата, могло бы переусердствовать его, и я хотел бы видеть некоторые другие методы также. Однако вот мой код.
Обратите внимание, что это использует Moq для насмешки контекста... И, я ничего еще не сделал с querystring (мои маршруты не содержат querystrings).
var urlReferrer = Request.UrlReferrer;
if (urlReferrer != null)
{
var url = "~" + Server.UrlDecode(urlReferrer.PathAndQuery);
// get routecollection
var routeCollection = new RouteCollection();
GlobalApplication.RegisterRoutes(routeCollection);
// mcok context
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context.Expect(ctx => ctx.Request).Returns(request.Object);
// mock request
// TODO: convert querystring to namevaluecollection
// now it's just stripped
if (url.IndexOf('?') > 0)
{
url = url.Substring(0, url.IndexOf('?'));
}
var mock = Mock.Get(context.Object.Request);
// TODO: insert namevaluecollection of querystring
mock.Expect(req => req.QueryString).Returns(new NameValueCollection());
mock.Expect(req => req.AppRelativeCurrentExecutionFilePath).Returns(url);
mock.Expect(req => req.PathInfo).Returns(string.Empty);
// get routedata with mocked context
var routeData = routeCollection.GetRouteData(context.Object);
var values = routeData.Values;
return RedirectToAction(routeData.Values["action"].ToString(), values);
}
Как я сказал, это, возможно, немного сверхсложно :)