Если вы производите какой-либо класс из базового класса, то вам следует либо добавить конструктор без параметров в базовый класс, либо указать конструктор базового класса, который будет вызываться в производном классе. Итак, чтобы решить вашу проблему: Решение 1: Добавьте конструктор без параметров в базовый класс, т.е. в MaliciousSmall as,
public MaliciousSmall()
{
}
Решение 2: Укажите конструктор базового класса в конструкторе производного класса как,
public DataRow row;
public Malicious: base(row)
{
}
Надеюсь, это поможет вам!
Очевидно, что второй путь яснее. На самом деле не могло быть никаких причин для первого.
Я бы, однако, расширил его до следующего:
string someJavaScript = string.Format(@"
<script language='JavaScript' >
function foo()
{
var bar = '{0}';
}
</script>", blah);
Если у вас есть несколько вещей, которые нужно вставить внутри строки, метод string.Format станет скорее более читаемый, чем встроенная конкатенация.
Строковый литерал по одной причине: удобочитаемость.
(производительность не является проблемой, мы говорим о МОССЕ ...)
Второй способ, хотя использование внешнего файла намного лучше и позволяет изменения, которые необходимо внести в приложение без его перекомпиляции.
Вам также понадобится хороший, читаемый способ вставки переменных. Самый простой подход - использовать string.Format, но тогда каждая переменная будет {0} или {1}, и это может быть нечитаемым.
Как насчет:
public static string Insert(object dictionary, string into)
{
foreach (PropertyInfo property in dictionary.GetType().GetProperties())
into = into.Replace("<%" + property.Name + "%>",
property.GetValue(dictionary, null).ToString());
return into;
}
Тогда вы можете сделать это:
string js = Insert(new { divList, url },
@"jQuery(document).ready(function(){
jQuery('#<%divList%>').jqGrid({
url:'<%url%>',
datatype: 'json',
mtype: 'GET', ... etc...");
Или если сценарий находится во внешнем файле:
string js = Insert(new { divList, url }, File.ReadAllText("someFile.js"));
Вы можете передать любой объект, и его свойства будут напрямую доступны через синтаксис экранирования в стиле ASP.
Реализация, приведенная выше, очевидно, не очень эффективна, но она коротка.
Другая возможность - написать страницу .aspx, которая возвращает JavaScript, а затем вы можете включить ее в свои HTML-страницы со ссылкой