Добавление контроля на страницу после некоторой операции MVC3 - PullRequest
0 голосов
/ 09 февраля 2012

Я начну с того, что я очень новичок в MVC3 и просто нуждаюсь в некотором общем руководстве.

В настоящее время у меня есть веб-страница MVC3 с элементом управления загрузкой DevExpress.Элемент управления загрузкой анализирует выбранный документ и вызывает веб-сервис с данными, полученными из файла.Я хочу отобразить ответ веб-сервиса в сетке devexpress (который я имею в частичном представлении), но не могу понять, как создать его экземпляр, пока не будут получены результаты от веб-сервиса.

Вот что у меня естьпока что ...

Index.cshtml

<div id="form" style="float:left; margin-left:50px;">
<p>Select a file to upload:</p>

@using (Html.BeginForm("Index", "StepUpdater", FormMethod.Post, new { id="uploadForm", name="uploadForm" }))
{
    @Html.DevExpress().UploadControl(settings =>
       {
           settings.Name = "uploadController";
           settings.Width = 325;
           settings.CallbackRouteValues = new { Controller = "StepUpdater", Action = "CallbacksUpload" };
           settings.UploadButton.
       }).GetHtml()

    <label style="color:Red">@TempData["Error"]</label>

    @Html.DevExpress().Button(settings =>
        {
            settings.Name = "uploadButton";
            settings.Text = " Upload";
            settings.UseSubmitBehavior = false;
            settings.ClientSideEvents.Click = "function(s,e){uploadController.Upload();}";
        }).GetHtml()
}

<br />

@Html.Partial("GridViewPartial", (IEnumerable<StepResponse>)Model)

GridViewPartial.cshtml

@using DevExpress.Web.Mvc.UI
@using DevExpress.Web.Mvc
@Html.DevExpress().GridView(settings => {
    settings.Name = "Responses";
    settings.CallbackRouteValues = new { Controller = "StepUpdater", Action =         "GridViewPartial" };
    settings.Settings.ShowColumnHeaders = true;
    settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
}).Bind(Model).GetHtml()

Затем контроллер

    private IEnumerable<StepResponse> responses  = new List<StepResponse>();
    public IEnumerable<StepResponse> Responses
    {
        get { return responses; } 
        set { responses = value; }
    }

    public ActionResult Index()
    {
        return View(Responses);
    }

    public ActionResult GridViewPartial()
    {
        if (Responses == null)
            Responses = new List<StepResponse>();

        return PartialView("GridViewPartial", Responses);
    }



    public ActionResult CallbacksUpload()
    {
        UploadControlExtension.GetUploadedFiles("uploadController", new ValidationSettings { AllowedFileExtensions = new []{ ".csv" }}, uploadControl_FileUploadCompleted);
        return GridViewPartial();
    }

    .... steps to parse csv and put results in Responses object

1 Ответ

0 голосов
/ 10 февраля 2012

Я вижу, что вы загружаете файл с помощью метода загрузки на стороне клиента.

Вы можете обновить GridView следующим образом:

1) Выполнить действие « CallbacksUpload » и обработать загруженный файл;

2) Хранить информацию о загруженном и запланированном вызове веб-службы через состояние сеанса, например;

3) Обработка события на стороне клиента FileUploadComplete , как показано в интерактивной «Загрузка файла - AJAX-загрузка» demo;

4) Выполнение пользовательского обратного вызова GridView через клиентский метод PerformCallback , как показано в интерактивном «Grid View - Grouping» demo;

4) Обработайте действие " GridViewPartial ", выполните вызов веб-службы, заполните модель GridView и верните " GridViewPartial " PartialView с этой моделью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...