Вот два примера кода, которые можно попробовать:
1 :
<script>
function Print() {
alert ("THUD.. another tree bites the dust!")
if (document.layers)
{
window.print();
}
else if (document.all)
{
WebBrowser1.ExecWB(6, 1);
//use 6, 1 to prompt the print dialog or 6, 6 to omit it
//some websites also indicate that 6,2 should be used to omit the box
WebBrowser1.outerHTML = "";
}
}
</script>
<object ID="WebBrowser1" WIDTH="0" HEIGHT="0"
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</object>
2 :
if (navigator.appName == "Microsoft Internet Explorer")
{
var PrintCommand = '<object ID="PrintCommandObject" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
document.body.insertAdjacentHTML('beforeEnd', PrintCommand);
PrintCommandObject.ExecWB(6, -1); PrintCommandObject.outerHTML = "";
}
else {
window.print();
}
Вы, возможно, должны добавить сайт/страница, Вы тестируете на Вас локальную зону интранет.
Я думаю, что вы движетесь в правильном направлении относительно шаблона репозитория. Что касается вашего вопроса о классах ViewModel, я предлагаю вам использовать что-то, что преобразует выходные данные методов бизнес-службы в некоторые желаемые результаты. Например, ваша бизнес-служба заказа может иметь метод под названием GetOrders ()
. Используя настраиваемый атрибут, вы можете определить для него тип класса представления. Представление может получать выходные данные этого метода, возможно, объединяет его с другими видами данных и возвращает результат в виде коллекции объектов с анонимными типами. В этом случае представление будет принимать IQueryable
или IEnumerable
в качестве входных данных и возвращает IList
в качестве выходных данных.
Этот метод очень поможет вам, когда вам нужно показать различные виды ваших данных на стороне клиента. Мы уже использовали нечто похожее (но более сложное) на этот метод в рамках нашей компании.