#jquery #asp.net-mvc
#jquery #asp.net-mvc
Вопрос:
Насколько я понимаю, $.load
в jQuery вводит HTML в элемент (например, div). Однако то, что я хочу сделать, это отправить строку в div через действие контроллера MVC.
Public Function Stream() As String
Dim streamPath As String = ConfigurationManager.AppSettings.Item("LiveStreamPath")
Dim dataStream As String = System.IO.File.ReadAllText(streamPath)
dataStream = dataStream.Replace(vbNewLine, "<br/>")
Return dataStream
End Function
Это находится внутри HomeController
и Global.asax
имеет URL-адрес, сопоставленный с /Home/Stream, и действительно, переход к этому местоположению вручную показывает страницу с текстом, расположенным в LiveStreamPath . Однако я хочу использовать другое представление для просмотра этой информации в div.
jQuery:
<script type="text/javascript">
$(document).ready(function () {
$('#testmonitor').load('Home/Stream');
});
</script>
Само представление не представляет собой ничего особенного, просто <div id="testmonitor"></div>
.
Я совершенно уверен, что проблема заключается в моем jQuery. Как я могу заставить скрипт загружать результат в строку testmonitor
?
РЕДАКТИРОВАТЬ: URL-адрес представления отображается как ~/Home/MonitorTests?Длина = 4. Быстрый поиск в Google показал, что добавляемое свойство Length означает, что строка фактически передается в представление.
Комментарии:
1. Если домашний / поток контроллера зависит от представления, не следует ли вместо этого загружать представление в контроллер? Теперь кажется, что вы загружаете содержимое Home / Stream в несуществующий элемент 🙂
2. На самом деле ничего не происходит. Кроме того, в чем дыра? Я не знаком с написанием кода, который предотвращает использование XSS.
3. @MarcoJohannesen Файл в LiveStreamPath на самом деле постоянно меняется. Я хочу иметь возможность отображать изменения в реальном времени для пользователя с помощью функции таймера (которую я буду реализовывать, как только div сможет сначала отобразить текст), поэтому я использую jQuery, а не прямую загрузку файла в мое представление.
Ответ №1:
Вы используете относительный путь, который не будет работать, если вы не находитесь в корне.
Измените его на .load('/Home/Stream')
.
Комментарии:
1. Это не решило проблему. Я подозреваю, что это больше связано с тем, что на самом деле возвращает контроллер.