HTML не может найти скрипт - PullRequest
       16

HTML не может найти скрипт

0 голосов
/ 12 апреля 2019

Я пытаюсь использовать следующий код для отображения html-страницы из webApi:

    [AcceptVerbs("GET")]
    [AllowAnonymous]
    [Route("ManageAccount/{id}")]
    public HttpResponseMessage ManageAccount(string id)
    {
        if (! String.IsNullOrEmpty(id))
        {

            var path = "C:/Users/user/Project/" + id + ".html";
            var response = new HttpResponseMessage();
            response.Content = new StringContent(File.ReadAllText(path));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
            return response;

        }
        var path2 = "C:/Users/user/Project/Login.html";
        var response2 = new HttpResponseMessage();
        response2.Content = new StringContent(File.ReadAllText(path2));
        response2.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
        return response2;
       // return Redirect("Login.html");
    }

Я установил ContentType как text / html для чтения html-страницы, но на этой странице есть сценарии, теперь все сценарии читаются как текстовые/ html!

Пожалуйста, какие-либо предложения?

Как это исправить?

Обновление:

Я получил это, если скриптызагружен на сервер, он работает!

Я не знаю, есть ли способ загрузить мои скрипты на сервер, и я не знаю, хорошая ли это идея!

Извините, яновое в этой области :) Спасибо

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019
  • File.ReadAllText - это просто метод чтения текста из файла
  • StringContent - это просто структура, в которой хранится текст для добавления в тело ответа.

Оба компонента не включают серверный компилятор сценариев.

Я думаю, что это проблема архитектуры MVC! Вы, вероятно, знаете, что ASP.MVC предоставляет два типичных типа контроллеров: Http.ApiController и Mvc.Controller !!! Простой в понимании, ApiController часто используется только для обработки данных, он не оснащен функциями, используемыми для обработки Razor C #. Пожалуйста, используйте Mvc.Controller для этого!

0 голосов
/ 13 апреля 2019

Методы в контроллерах Web API 2 могут возвращать разные типы.

  • void (просто возвращает клиенту код состояния HTTP 204)
  • HttpResponseMessage (Web API преобразует возвращаемый результатзначение в текст ответа HTTP)
  • IHttpActionResult (реализация этого интерфейса позволяет создавать объекты, реализующие различные сценарии при обработке запроса)

При необходимости мы можем создать нашсобственный класс:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using SomeApp.Models;

public class HtmlResult : IHttpActionResult
{
    private User model;

    public HtmlResult(User model)
    {
        this.model = model;
    }
    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        string user = "<html><head><meta charset=utf-8 /></head></body>" +
            "<h2>" + user.Name + "</h2><h3>" + user.Login + "</h3><h3>"
            + user.Bday+ "</h3>" + "</body></html>";

        var tmp = new HttpResponseMessage();
        tmp.Content = new StringContent(user);
        tmp.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

        return Task.FromResult(tmp);
    }
}

Давайте попробуем использовать:

public IHttpActionResult GetUser(int id)
{
    User user = _db.User.Find(id);
    return new HtmlResult(user);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...