Невозможно преобразовать «.Controllers.DeviceController» в «System.Web.UI.Page» при попытке передать метод в библиотеке C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно преобразовать «.Controllers.DeviceController» в «System.Web.UI.Page» при попытке передать метод в библиотеке

Сообщение Anonymous »

После нажатия кнопки на контроллере мне нужно передать текущее представление методу в библиотеке классов. Я пытаюсь сделать это с помощью этой строки:
В контроллере:

Код: Выделить всё

    session.ExecuteCommand(this, doc, (response) =>
{
CmdGetNextGlogResponse cmd_resp = new CmdGetNextGlogResponse();
switch (cmd_resp.ParseResult(response.Xml))
{
case CommandExeResult.OK:
cmd_resp.Parse(response.Xml);
break;
default:
Result = "Failed!";
break;
}
},
(ex) =>
{
Result = ex.Message;
});
Метод библиотеки классов приведен ниже

Код: Выделить всё

        public void ExecuteCommand(System.Web.UI.Page page, XmlDocument request,       DeviceResponseHandler responseHandler, ExceptionHandler responseExceptionHandler)
{
page.RegisterAsyncTask(new System.Web.UI.PageAsyncTask(
(sender, e, cb, extraData) => BeginCommand(request,cb, extraData),
(ar) => {
try
{
using (var resp = new DeviceResponse(this, ar)) responseHandler(resp);
}
catch (Exception ex)
{
responseExceptionHandler(ex);
}
},
null,//(ar) => CancelCommand(ar, new TimeoutException()),
null));
}

public IAsyncResult BeginCommand(XmlDocument message, AsyncCallback cb, object extra)
{
return BeginCommand(message, cb, extra, 5000);////Timeout.Infinite);
}
public IAsyncResult BeginCommand(XmlDocument message, AsyncCallback cb, object extra, int millisecondsTimeout)
{
Async ar = new Async(cb, extra);

if (millisecondsTimeout != Timeout.Infinite)
ar.timeout_timer = new Timer(ar.on_timeout, this, millisecondsTimeout, Timeout.Infinite);

CommandRequest request;
request.message = message;
request.ar = ar;

lock (_state)
{
ar.message_id = 1;// _nextTransactionId;
///_nextTransactionId = (_nextTransactionId + 1) & MsgId_SequenceMask;
_nextTransactionId = _nextTransactionId + 1;

// Add command to wait-response queue.
_commandsWaitingForResponses.Add(request.ar.message_id, request);

}

bool succeeded = false;
try
{
this.Send(message.OuterXml);

succeeded = true;
return ar;
}
finally
{
if (!succeeded)
{
lock (_state)
{
// Remove the command from wait-polling queue.
//                        _commandsWaitingForResponses.Remove(request.ar.message_id);
}

lock (ar.monitor)
{
if (ar.timeout_timer != null)
{
ar.timeout_timer.Dispose();
ar.timeout_timer = null;
}
}
}
}
}
Ошибка:
Ошибка CS1503 Аргумент 1: невозможно преобразовать из «WebApplication2.Controllers.DevicesController» в « System.Web.UI.Page'
Я попробовал BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page)) как страницу для замены 'this', он входит в метод, но выдает некоторую ошибку
Asp page,cache,codebehind,contenttype выдает исключение
Невозможно войти в метод IAsyncResult BeginCommand.
Вышеуказанное отлично работает в приложении веб-формы asp.net, но в mvc, который мы пытаемся, не работает нормально.
В веб-формах Asp приведенный выше код работает нормально, входит в метод Async и возвращает данные как идеальные. В MVC нам нужна замена «это» или любое другое лучшее решение.
Я пробовал искать похожие темы, менять «это» на «Страница» и т. д. — безуспешно. Любая помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -page-when
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»