Что за код C# в тегах <script>?

user7320

Вот тут прочитал http://www.functionx.com/aspnet/Lesson07.htmКак эта тема называется, где почитать можно подробнее, что это такое, зачем это нужно и где применяется?Это, случаем, не замена джава-скрипту? Параметр "выполнение на сервере" наводит на мысль, что код, передающийся на сервер, ещё и скомпилироваться там должен, так что ответ ждать даже дольше, чем от серверной части си-шарповского кода, который заранее уже скомпилирован. Я прав?
24 ответа

user7320

Ну и если это своеобразная замена, только выполняющаяся не на клиенте, а на сервере, то можно ли с помощью неё делать подобие асинхронных запросов и частичных обновлений страницы?Не люблю джава-скрипт - люблю си-шарп.


user7320

Ну и если это своеобразная замена, только выполняющаяся не на клиенте, а на сервере, то можно ли с помощью неё делать подобие асинхронных запросов и частичных обновлений страницы?Не люблю джава-скрипт - люблю си-шарп.
Это никакая не замена. Серверный код можно писать в файле cs и в файле aspx. Без разницы. Эта вся фигня (в любом случае) компилится один раз. К клиентскому коду, что на яваскрипте+хтмл, aspx страница не имеет никакого отношения до тех пор, пока она не обработается сервером, и сервер не превратит её в хтмл+яваскрипт.По поводу "не люблю джава-скрипт", что здесь уж поделаешь. :) Если хотите заниматься вэбом, то особо выбора-то и нет.


user7320

По поводу "не люблю джава-скрипт", что здесь уж поделаешь. :) Если хотите заниматься вэбом, то особо выбора-то и нет.
Выбор всегда есть, просто его сайты для пользователя будут системы "унылый кирпич"


user7320

Это никакая не замена. Серверный код можно писать в файле cs и в файле aspx. Без разницы. Эта вся фигня (в любом случае) компилится один раз. К клиентскому коду, что на яваскрипте+хтмл, aspx страница не имеет никакого отношения до тех пор, пока она не обработается сервером, и сервер не превратит её в хтмл+яваскрипт.По поводу "не люблю джава-скрипт", что здесь уж поделаешь. :) Если хотите заниматься вэбом, то особо выбора-то и нет.
Я не понял последовательности этих обработок. Вот есть, скажем, такая страница (Используя Razor для вызова функции):
<html>
<head>

<script language="C#" type="text/C#" runat="server">
void Welcome()
{
 Response.Write("Welcome to our web site.");
}
</script>

<<span>/</span>head>
<body>
@Welcome()
<<span>/</span>body>
<<span>/</span>html>
При первом запросе (например, гет) этой страницы пользователь получит код с нескомпилированным (т. е. в виде текста) скриптом на си-шарпе, так? А при втором запросе (посте) он получит уже вместо текста @Welcome() то значение, которое она возвращает?Или сразу при первом же запросе этой страницы на сервере компилируется скрипт и вместо @Welcome() подставляется её возврат? При этом в результирующей странице всё равно остаётся текст крипта на си-шарпе?Если второй вариант, то какой смысл таких скриптов? Особенно в контексте ASP.NET MVC - чтобы не создавать лишниюю модель для простого вызова простой функции?Если последнее верно, то разве в MVC не предназначен для этого синтаксис Разора @helper: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx ?Или такие скрипты - это чисто для ASP.NET, а для MVC с разором такую же задачу решают хелперы через собачку?


user7320

Выбор всегда есть, просто его сайты для пользователя будут системы "унылый кирпич"
Скажите это тем, у кого джава-скрипты отключены. Причину отключения обсуждать не будем.


user7320

user7320,Читайте азбуку. И нечего на професстональный форум всякую ерунду постить.


user7320

Скажите это тем, у кого джава-скрипты отключены. Причину отключения обсуждать не будем.
Аспнет не будет работать, если отключен яваскрипт.


user7320

Аспнет не будет работать, если отключен яваскрипт.
хм.. ну от вас не ожидал, честно говоряБудет работать, аяксы - не будут и клиентские валидаторы, а page life cycle пройдет нормально и даже события обработаются на основе сабмитящихся данных, только что сам проверил :)


user7320

Я не понял последовательности этих обработок. Вот есть, скажем, такая страница (Используя Razor для вызова функции):
<html>
<head>

<script language="C#" type="text/C#" runat="server">
void Welcome()
{
 Response.Write("Welcome to our web site.");
}
</script>

<<span>/</span>head>
<body>
@Welcome()
<<span>/</span>body>
<<span>/</span>html>
При первом запросе (например, гет) этой страницы пользователь получит код с нескомпилированным (т. е. в виде текста) скриптом на си-шарпе, так? А при втором запросе (посте) он получит уже вместо текста @Welcome() то значение, которое она возвращает?Или сразу при первом же запросе этой страницы на сервере компилируется скрипт и вместо @Welcome() подставляется её возврат? При этом в результирующей странице всё равно остаётся текст крипта на си-шарпе?Если второй вариант, то какой смысл таких скриптов? Особенно в контексте ASP.NET MVC - чтобы не создавать лишниюю модель для простого вызова простой функции?Если последнее верно, то разве в MVC не предназначен для этого синтаксис Разора @helper: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx ?Или такие скрипты - это чисто для ASP.NET, а для MVC с разором такую же задачу решают хелперы через собачку?
последовательно обработается, почитайте где нить как работает Razor и asp.net в принципе, + основы C#


user7320

SanSYS,__doPostBack не будет работать.


user7320

Не будет работать аякс. Ну и нафига такие сайты?


user7320

Не будет работать аякс. Ну и нафига такие сайты?
Ну.. иногда без аякса проще, к примеру - загрузка файла (конечно можно ифреймом или кучей готовых решений воспользоваться, но проще без них)А в целом - согласен


user7320

user7320,Парсер разберет всю эту писанину и создаст cs или vb файл, который затем скомпилируется соответствующим компилятором в dll, которую и будет использовать веб сервер для обработки запроса.


user7320

SanSYS,__doPostBack не будет работать.
Да и ладно, сабмит у формы кнопочкой можно же вызвать, для обработки заполеннных пользователем форм достаточно :)Жаль что нет по умолчанию обработки отключенных куков (к примеру - передавать токены в урле, вроде такое поведение для ида сессии есть)


user7320

Если хотите заниматься вэбом, то особо выбора-то и нет.
+1
Не будет работать аякс. Ну и нафига такие сайты?
Сайты разные нужны, сайты разные важны (с)user7320, Вы даже не представляете насколько тяжело поддерживать код, в котором намешана разметка, javascript и ещё и c# туда же впихнули. Это просто п... Я когда на такое нарываюсь, проклинаю автора всем что вспомню, особенно если код разбросан по всей странице, а не собран в одном месте. Оно Вам надо, карму портить?Единственное зачем можно использовать сие новшество (примеры для студентов не берём, там главное - уместить всё на одной странице), так это если нужно менять код прям на сервере. Например, вывести какую-то отладочную инфу на странице, которой (инфы) на рабочем сервере нет. В остальных случаях отдельные cs наше всё.


user7320

Скажите это тем, у кого джава-скрипты отключены.
Зачем себя мучать? Зачем разговаривать с теми, у кого js отключен? Зачем разговаривать с теми, кто как баран в IE6 уперся? Вы для кого живете и работаете? Для себя или нет? =)


user7320

Зачем себя мучать? Зачем разговаривать с теми, у кого js отключен? Зачем разговаривать с теми, кто как баран в IE6 уперся? Вы для кого живете и работаете? Для себя или нет? =)
В книжках по программированию пишут, что в первую очередь всё должно работать на обычном ХТМЛ, а потом уже по желанию пожно всякие джаваскрипты и асинхронные запросы добавить. А скрипты могут быть отключены (я так думаю) у всяких пользователей, сидящих за пятью фаерволлами во всяких больших конторах, у которых админы-параноики.В принципе, рекомендации в книжках не лишены смысла - всё должно быть в первую очередь универсальным и работать везде, а потом уже быть специальным. Да и для лёгких страниц не так важно, будет она полностью обновляться или частично. А всякие красивости мне пока не нужны - максимум, это клиентская валидация у меня на скриптах пока. Я же не всякие вконтакте и ютубы делаю.Хотя согласен, где-то без скриптов не обойтись. Но вообще я их не люблю, т. к. не знаю. Было бы хорошо, если бы все сайты были бы сделаны целиком на Сильверлайте и веб-программистам надо было бы только изучить си-шарп и замл. И тогда бы мир во всём мире настал бы.
+1Сайты разные нужны, сайты разные важны (с)user7320, Вы даже не представляете насколько тяжело поддерживать код, в котором намешана разметка, javascript и ещё и c# туда же впихнули. Это просто п... Я когда на такое нарываюсь, проклинаю автора всем что вспомню, особенно если код разбросан по всей странице, а не собран в одном месте. Оно Вам надо, карму портить?Единственное зачем можно использовать сие новшество (примеры для студентов не берём, там главное - уместить всё на одной странице), так это если нужно менять код прям на сервере. Например, вывести какую-то отладочную инфу на странице, которой (инфы) на рабочем сервере нет. В остальных случаях отдельные cs наше всё.
Я так понял, вы про ASP.NET говорите? У меня же MVC. Я вот догадывался, что подобные скриптовые вставке на си-шарпе - это для АСП.НЕТ. Я так понимаю, что в MVC они бесполезны.Или я не так понял?И да, как вы разделите код ХТМЛ и серверный, если страница генерится на сервере, а не статичная? Вот, например, моя страница с подстановочными значениями (берутся из ресурсов), хотя ещё могут быть и циклы и прочее:
<div <span>id</span><span>=</span><span>"Main"</span>>
 <h2>@Locals.Views.Account.Register.Strings.Header<<span>/</span>h2>
 <p>
 @Locals.Views.Account.Register.Strings.UseTheFormBelowMessage
 <<span>/</span>p>
 <p>
 @string.Format(
 Locals.Views.Account.Register.Strings.MinimumPasswordCharactersMessage, 
 Site2.Models.AccountModelsRestrictions.minimumPasswordLength, 
 Site2.Models.AccountModelsRestrictions.maximumPasswordLength)
 <<span>/</span>p>

 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

 @using (Html.BeginForm()) 
 {
 @Html.AntiForgeryToken("register")
 @Html.ValidationSummary(true, Locals.Views.Account.Register.Strings.FormValidationSummaryMessage)
 <div>
 <fieldset>
 <legend>@Locals.Views.Account.Register.Strings.FormLegend<<span>/</span>legend>

 <div <span>class</span><span>=</span><span>"editor-label"</span>>
 @Html.LabelFor(m => m.UserName)
 <<span>/</span>div>
 <div <span>class</span><span>=</span><span>"editor-field"</span>>
 @Html.TextBoxFor(m => m.UserName)
 @Html.ValidationMessageFor(m => m.UserName)
 <<span>/</span>div>

 <div <span>class</span><span>=</span><span>"editor-label"</span>>
 @Html.LabelFor(m => m.Email)
 <<span>/</span>div>
 <div <span>class</span><span>=</span><span>"editor-field"</span>>
 @Html.TextBoxFor(m => m.Email)
 @Html.ValidationMessageFor(m => m.Email)
 <<span>/</span>div>
 ...
Как вы сделаете серверную логику в отдельном коде? Хотя, тут серверная логика только при построении интерфейса, а собственно логика приложения - действительно в отдельном коде (модели и контроллеры).А я встречал таких, которые утверждали, что весь интерфейс должен рисоваться скриптами на клиенте, а сервер должен только данные и скрипты эти передать клиенту. Как это должно выглядеть, я не знаю. И обоснования этому я не узнал - мода это такая, или какая-то практическая необходимость.


user7320

Как вы сделаете серверную логику в отдельном коде?
Например так.


user7320

user7320,Вы всё поняли не так. Говорим мы про аспнет, а мвц - эта штука, которая в него входит, точно так же, как вэбформс.Вставьте куда-нибудь в свою страницу <% Response.Write("abc"); %> результат будет тот же, что и с тэгом script runat="server". Можно так, а можно эдак.Короче, учиться и учиться. Только не читайте больше таких книжек, где пищут "всё должно работать на обычном ХТМЛ", или хотя бы посмотрите год издания.


user7320

user7320, RTFM, + сильвер должен умереть


user7320

user7320, RTFM, + сильвер должен умереть
Посмотрите, что пишет пользователь
Например так.
Он как бы предлагает для веба изучать: ХТМЛ, джава-скрипт, ЦСС, АСП.НЕТ (или ПХП - кому что), АСП.НЕТ МВЦ, Беллевю. А я предлагаю только си-шарп и замл. При том, что первый набор при всём своём огромном количестве предлагает средства и видимый результат куда беднее. Я уже не говорю, что трёхмерная графика там делается либо через сторонние библиотеки (что?! ещё что-то добавить к тому списку?!!), либо через задницу (трёхмерный движок на джава-скриптах? - ну, вроде бы, есть такое, правда, нигде почти не используется - настолько это нужно и производительно). Чувствуете разницу?Почему вы не хотите признать, что всё то нагромождение языков, технологий и прочего, что есть в веб-программировании, уже давно устарело и обросло бесполезной и вредной монструозностью?


user7320

Почему вы не хотите признать, что всё то нагромождение языков, технологий и прочего, что есть в веб-программировании, уже давно устарело и обросло бесполезной и вредной монструозностью?
Именно поэтому авторы книжек советуют всё делать сперва на ХТМЛ, а всякие библиотеки сторонние добавлять уже по мере необходимости. Ибо разобраться со всеми веб-форматами и их совместимостью, да ещё чтобы всё это везде заработало (а не так, что "только в будущей преальфа тестовой версии нашего браузера"), надо столько времени потратить и помучиться... Это как разработчики игровых движков под С++, которые бОльшую часть времени занимаются тем, что изобретают сборщик мусора.


user7320

user7320,В каком месте посмеяться? Наверное, можно в любом. Если авторы советуют что-то делать сначала на хтмл - они правы.Не правы Вы, когда перевираете всё. Кстати, Вы насчёт каких-то библиотек переврали - совершенно однозначно. Вы же сами сказали, что используете майкрософт-мвц, так ведь?Насчёт много времени помучиться - не совсем верно. Скорее не "мучиться", а "учиться".


user7320

user7320, Вы хоть поняли куда ссылку я дал? :)Вы используете Razor и вопрошаете "Как вы сделаете серверную логику в отдельном коде?". Я намекаю на то, что можно использовать другой движок представления (View Engine) и даю на него ссылку. То есть предлагаю воспользоваться одной из возможностей (выбор движка представления) фреймворка ASP.NET MVC.Если бы Вы писали на Сильверлайт, то никаких сторонних разработок бы не юзали для него? Сомневаюсь :)