Возможно, java.util.zip пакет мог бы помочь Вам
, Так как Вы спрашиваете о том, как преобразовать из массива байтов, я думаю (не протестированный), можно использовать метод ByteArrayInputStream
int read(byte[] b, int off, int len)
Reads up to len bytes of data into an array of bytes from this input stream.
, что Вы будете питаться к
ZipInputStream This class implements an input stream filter for reading files in the ZIP file format.
Представления не должны извлекать данные откуда-либо. Предполагается, что они будут использовать данные, которые были переданы им в виде модели представления из действия контроллера. Поэтому, если вам нужно использовать такие данные в представлении, правильный способ сделать это состоит в том, чтобы определить модель представления:
public class MyViewModel
{
public string LicenseName { get; set; }
}
ваш контроллер должен заполнить его, откуда бы он ни был заполнен (для лучшего разделения Вы можете использовать репозиторий):
public ActionResult Index()
{
var model = new MyViewModel
{
LicenseName = HttpContext.Application["LICENSE_NAME"] as string
};
return View(model);
}
и, наконец, ваш строго типизированный вид отображает эту информацию для пользователя:
<div>@Model.LicenseName</div>
Это правильный шаблон MVC и вот как должно быть сделано.
Избегайте представлений, которые извлекают данные как вредные, потому что сегодня это состояние приложения, завтра это цикл foreach
, на следующей неделе это запрос LINQ, и вы сразу же будете писать запросы SQL в своих представлениях.
Опираясь на шаблон @Darin-Dimitrov, на который я ответил выше, я передал модель в частичное представление, которое я загрузил на страницу _Layout.
Мне нужно было загрузить веб-страницу с внешнего ресурса в Application Load, который будет использоваться в качестве заголовка навигации по нескольким сайтам. Это в моем Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Application["HeaderNav"] = GetHtmlPage("https://site.com/HeaderNav.html");
}
static string GetHtmlPage(string strURL)
{
string strResult;
var objRequest = HttpWebRequest.Create(strURL);
var objResponse = objRequest.GetResponse();
using (var sr = new StreamReader(objResponse.GetResponseStream()))
{
strResult = sr.ReadToEnd();
sr.Close();
}
return strResult;
}
Вот мой Action контроллера для частичного просмотра.
public class ProfileController : BaseController
{
public ActionResult HeaderNav()
{
var model = new Models.HeaderModel
{
NavigationHtml = HttpContext.Application["HeaderNav"] as string
};
return PartialView("_Header", model);
}
}
Я загрузил частичное представление на странице _Layout следующим образом.
<div id="header">
@{Html.RenderAction("HeaderNav", "Profile");}
</div>
Частичное представление _Header.cshtml очень просто и просто загружает html из переменной приложения.
@model Models.HeaderModel
@MvcHtmlString.Create(Model.NavigationHtml)
Вы должны иметь возможность получить доступ к этому через HttpContext.Current.Application[]
, однако лучшие практики MVC утверждают, что вам, вероятно, следует рассмотреть возможность передачи этого через вашу модель представления.
Я имел эту проблему в контроллере MVC и должен был сделать полностью определенный HttpContext для него для работы..
System.Web.HttpContext.Current.Application["VarName"]