在一些操作MVC3之后将控件添加到页面

时间:2012-02-09 19:20:12

标签: web-services asp.net-mvc-3 devexpress

我首先要说的是我对MVC3很新,只需要一些大方向。

我目前有一个带有DevExpress上传控件的MVC3网页。上传控件解析所选文档并使用从文件获得的数据调用web服务。我想在devexpress网格中显示web服务响应(我在部分视图中显示),但是直到收到webservice的结果后才能弄清楚如何实例化它。

这是我到目前为止所拥有的......

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 :(得分:0)

我看到你是通过客户端上传方法上传文件。

您可以通过以下方式更新GridView:

1)处理“ CallbacksUpload ”操作并处理上传的文件;

2)通过会话状态存储有关上载和计划的Web服务调用的信息,例如;

3)处理客户端 FileUploadComplete 事件,如在线"File Upload - AJAX Uploading"演示中所示;

4)通过客户端 PerformCallback 方法执行自定义GridView的回调,如在线"Grid View - Grouping"演示中所示;

4)处理“ GridViewPartial ”操作,执行Web服务调用,填充GridView的模型,并使用此模型返回“ GridViewPartial ”PartialView。