Я ищу решение, чтобы определить только функцию один раз в JavaScript, используя что-то в точности, как #ifndef в скомпилированных языках. Я нашел пару библиотек, которые должны были имитировать эту функциональность, но они не работали.
Я работаю с MVC 3 бритвой и определил некоторые HTML-помощники, поставили то, что по существу контролирует пользователь на странице.
Каждый элемент управления имеет набор функций JavaScript, которые определяют определенные функциональные возможности для этого элемента управления, поэтому в настоящем документе есть проблема: функции определяются несколько раз, когда помощник называется несколько раз на одной странице.
Я надеюсь найти способ сохранить очень небольшое количество JavaScript, определенного внутри помощника, и не приходится разделить весь JavaScript для каждого из этих небольших помощников в отдельном файле.
Образец:
@helper CmsImage(int id)
{
var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html;
<text>
<input type="button" class="editor_function" style="display: none;" onclick="editImage(@id); return false;" />
<script>
function editImage(id) {
$('#alt_text' + id).attr('value', $('#' + id).attr('alt'));
$('#image_url' + id).attr('value', $('#' + id).attr('src'));
}
function saveImage(button, id) {
$(button).parent().parent().removeClass('color-yellow').addClass('color-red');
$(button).parent().siblings('div.widget-content').html('<img alt="' + $('#alt_text' + id).val() + '" src="' + $('#image_url' + id).val() + '" id="' + id + '" />');
}
#endif
</script>
Image Url:
<input type="text" id="image_url@{id.ToString();}" /><br />
Alt Text:
<input type="text" id="alt_text@{id.ToString();}" /><br />
<input type="button" value="save" onclick="saveImage(this, @{id.ToString();});" />
@Html.Raw(GetCurrentContent(id))
</text>
}
Вышесказанное не работает в браузере, если дает мне ошибку: '48: Нераспознанный токен незаконно '