Попробуйте это -
$(document).on( 'click', '.click-activity', function () { ... });
Это можно сделать по запросу с использованием динамической компиляции, например, через пакет Microsoft.CodeAnalysis.CSharp.Scripting
. Например:
var name = "Joe";
var template = "Hi {name}";
var result = await CSharpScript.EvaluateAsync<string>(
"var name = \"" + name + "\"; " +
"return $\"" + template + "\";");
Обратите внимание, что этот подход медленный, и вам нужно будет добавить больше логики для обработки экранирования кавычек (и инъекционных атак) в строках, но выше это служит доказательством того, из-концепции.
Нет, вы не можете этого сделать, поскольку для создания строки времени (времени компиляции) требуется значение name
. Вместо этого используйте String.Format
или String.Replace
.
Я думаю, что эти строки всегда будут иметь одинаковое количество параметров, даже если они могут измениться. Например, сегодня template
является "Hi {name}"
, а завтра может быть "Hello {name}"
.
Короткий ответ: Нет, вы не можете делать то, что вы предложили.
Альтернатива 1: используйте метод string.Format .
Вы можете сохранить в своей базе данных что-то вроде этого:
"Hi {0}"
Затем, когда вы извлекаете шаблон строки из db, вы можете написать:
var template = "Hi {0}"; //retrieved from db
var name = "Joe";
var result = string.Format(template, name);
//now result is "Hi Joe"
С двумя параметрами:
var name2a = "Mike";
var name2b = "John";
var template2 = "Hi {0} and {1}!"; //retrieved from db
var result2 = string.Format(template2, name2a, name2b);
//now result2 is "Hi Mike and John!"
Альтернатива 2: используйте заполнитель.
Вы можете сохранить в своем что-то вроде этого:
"Hi {name}"
Затем, когда вы извлекаете шаблон строки из db, вы можете написать:
var template = "Hi {name}"; //retrieved from db
var name = "Joe";
var result = template.Replace("{name}", name);
//now result is "Hi Joe"
С тремя параметрами:
var name2a = "Mike";
var name2b = "John";
var template2 = "Hi {name2a} and {name2b}!"; //retrieved from db
var result2 = template2
.Replace("{name2a}", name2a)
.Replace("{name2b}", name2b);
//now result2 is "Hi Mike and John!"
Обратите внимание, на какой маркер вы выбираете для своих заполнителей. Здесь я использовал окружающие фигурные скобки {}
. Вы должны найти что-то, что вряд ли вызовет столкновения с остальной частью вашего текста. И это полностью зависит от вашего контекста.