Ответы пользователя Чак Норрис - CodeHelper

Чак Норрис

Чак Норрис
Карма 3384
Имя Неизвестно
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1103 дн., 22 час., 55 мин.
Последняя активность 535 дн., 7 час., 46 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
2
3
4
5
6
...
12
Перейти к вопросу →

Вручную из RouteData извлекать не обязательно, достаточно прописать эти параметры в аргументах метода:

    [HttpGet]
    public ActionResult addLine(int id, int pid)
    {
        OrgForm newline = new OrgForm();
        TempData["curPer"] = pid; // для ссылки "Назад" в текущий период
        TempData["curFrm"] = id;  // для ссылки "Отмена"
        return PartialView("partAddInOrgForm", newline);
    }

    [HttpPost]
    public ActionResult addLine(OrgForm lineAdd, int id, int pid)
    {

        int cfrm = id;
        Form frm = db.Forms.Where(f => f.formID == cfrm).First();
        lineAdd.Form = frm;
        int cper = pid;
        Period per = db.Periods.Where(p => p.perID == cper).First();
        lineAdd.FPeriorm d= fperm;
        db.AddToOrgForms(lineAdd);
        db.SaveChanges();
        List<OrgForm> orgFrm = (from of in db.OrgForms where of.perID == cper && of.formID == cfrm orderby of.lineCod select of).ToList();
        return PartialView("partOrgForms", orgFrm);
    }

Еще нужно убедиться, что параметр pid передаётся в POST-параметрах, т.к. если при извлечении pid вылетает подобная ошибка, то вероятно это значение вообще не было передано на сервер.

Перейти к вопросу →

Есть хорошая статья по этому поводу:

http://www.sovavsiti.cz/css/hr.html

Общий вывод из статьи такой — стилизовать HR очень сложно. Потому что каждый браузер отображает его по-свойму. Opera, например, рисует вокруг HR бордюр, который нельзя убрать. Есть проблемы и с хромом. Самое простое решение для кроссбраузерной стилизации — отказаться от HR и использовать обычный DIV.

Перейти к вопросу →

Нужно использовать атрибут ServiceKnownType и применять его в интерфейсе сервиса (на сам интерфейс или на отдельный метод):

[OperationContract]
[ServiceKnownType(typeof(HashHead))]
[WebGet(UriTemplate = "Head1", ResponseFormat = WebMessageFormat.Json)]
    MyMessage GetJsonHead1()
{
    JsonMessage result = new JsonMessage();
    result.Head = new HashHead("test","test");
    return result;
}
Перейти к вопросу →

Вообще, метод RenderWebPart пишет в поток вывода текстовую разметку и ресурсы должны подгружаться браузером отдельно, например с использованием того же HttpHandler'а. Конечно, в описанной архитектуре это не очень удобно. Если есть возможность переделать, то желательно хранить картинку на диске, а в базе хранить только путь. Тогда в методе RenderWebPart достаточно будет генерировать теги с указанием пути

а дальше браузер сам запросит файл у сервера. В крайнем случае, если нельзя переделать на файлы, хотя бы хранить картинку в отдельном поле таблицы базы, чтобы хендлеру не пришлось доставать её из документа.

Есть еще варианты встраивания данных картинки прямо в текстовый HTML, но такие подходы работают не во всех браузерах:

1 Использование src=data

Данные файла картинки можно встроить в текстовом формате в атрибут src:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D" alt="" />

Получается вот что:

Недостаток: не работает в IE до версии 8.

2 Конвертация картинки в HTML

Метод для особых извращенцев, но работает даже в IE. Суть — картинка конвертируется в набор HTML-тегов, которые при визуальном формировании в браузере выглядят как исходное изображение. Вот пример. Но такая конвертация, наверное, может занять больше времени чем чтение из базы)

Перейти к вопросу →

Статический метод WebConfigurationManager.GetSection по идее должен возвращать секцию текущего приложения. Но, возможно, если его вызвать не в том месте, то конфигурация не подцепается. Можно попробовать подгрузить её вручную:

var config = WebConfigurationManager.OpenWebConfiguration("/");
MayConfiguration configSection = (MayConfiguration) config.GetSection(
   "MayConfiguration");
Перейти к вопросу →

В веб-приложении можно сделать так:

var clientSection = (ClientSection) WebConfigurationManager.GetSection("system.serviceModel/client");
var endpoints = clientSection.Endpoints;

Затем из коллекции endpoins можно достать всё, что нужно:

foreach (ChannelEndpointElement endpoint in Model)
{
    var address = endpoint.Address;
    var name = endpoint.Name;
    // ...
}
Перейти к вопросу →

Если сервисы работают под .NET 3.5, то проблема обычно решается прописыванием примерно таких строк в web.config:

<system.serviceModel>
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="http://example.org:1234" />      
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

Где выделенный адрес — это базовый URL для всех сервисов. Подробнее о проблеме можно почитать в статье How can WCF support multiple IIS Binding specified per site ?

Перейти к вопросу →

Нужно пометить enum атрибутом DataContract, а все значения — атрибутом EnumMember:

[DataContract]
public enum SomeEnum
{
    [EnumMember]
    Value1,

    [EnumMember]
    Value2,

    [EnumMember]
    Value3
}
Перейти к вопросу →

Нужно использовать свойства из категории Loyout. Значения этих свойств позволяют полностью управлять компановкой элементов. Вот некоторые из них:

Свойство Dock — позволяет задать область контейнера, которую будет занимать данный элемент (весь контейнер или вся верхняя/нижняя/левая/правая часть контейнера).

Свойство Anchor — позволяет задать стратегию изменении размера элемента при изменении размера его контейнера. Можно отметить любой из флагов — Left, Right, Top, Bottom. Комбинируя эти флаги, можно добиться того, чтобы элемент (кнопка, поле ввода и т.п.) был «привязан» к одному из краёв формы или наоборот — занимал область, пропорциональную размеру формы.

Перейти к вопросу →

Нужно создать WCF сервис, который будет содержать всю серверную логику (подсчитывать количество рисунков и возвращать ссылки на них). На стороне silverlight нужно будет вызвать методы этого сервиса и создать элементы Image, указав в Source абсолютную ссылку на изображение.

Интерфейс сервиса может быть таким:

public IImageService 
{
    IList<string> GetImagesUrlList();
}

В silverlight:

// Создаём экземпляр сервиса    
IImageService service = GetImageService();

foreach(var url in service.GetImagesUrlList())
{
    Uri uri = new Uri(url, UriKind.Absolute);
    Image imageControl = new Image();
    imageControl.Source = new BitmapImage(uri);
    // тут нужно дополнительно настроить контрол
    // imageControl, например, задать размер и тп.
    // Потом нужно добавить imageControl в какой-то
    // контейнер на форме.
}

1
2
3
4
5
6
...
12
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.