如何从控制器返回部分视图以显示在主视图上?

时间:2017-09-05 14:30:22

标签: c# asp.net kendo-ui

我有观点:

<div>
    <form method="post"action='@Url.Action("ImportProviders")'>
        @(Html.Kendo().Upload()
            .Name("files")
            .HtmlAttributes(new { aria_label = "files" })
            .Validation(validation => validation.AllowedExtensions(new string[] { ".csv" }))
        )
        <p class ="text"> This File Browser only Accepts .CSV File.</p>
        <input type="hidden" id="clientNumber" name="Clientid" value="" />
        <p class="submit-btn">
            <input type="submit" value="Upload Providers" onclick="submit" id="UploadClick" class="k-button k-primary" />
            <i class="fa fa-spinner fa-pulse fa-3x fa-fw" id="makeMeDisappear"></i>
            <span class="sr-only">Loading...</span>
        </p>
    </form>
</div>
<br />

<div>
    @Html.Partial("ImportedProviderView");
</div>

我有c#Controller:

public PartialViewResult ImportProviders(String ClientId, IEnumerable<HttpPostedFileBase> files) {
    ...
    ImportProvidersView(result,FaultyRowsTable,"FAULTY ROW");
    ImportProvidersView(result, InsertedRows, "INSERTED ROW");
    ImportProvidersView(result, UpdatedRowsTable, "UPDATED ROW");

    return PartialView("ImportedProviderView", result.OrderByDescending(x=>x.Createdon));
}

但每次我运行此页面时,它只会将我带到局部视图,它不会将其注入上面的主视图中。

主要问题 如何在上面的主视图中显示它?

2 个答案:

答案 0 :(得分:0)

@Html.Partial方法仅用于渲染局部视图。如果需要执行返回视图的控制器操作,则需要使用@Html.Action方法

<div>
    @Html.Action("ImportProviders", "ControllerName", new { ClientId = <>, files = <> })
</div>

答案 1 :(得分:0)

@Html.Partial在服务器上呈现部分视图,作为主视图的一部分,返回给浏览器。如果在用户在浏览器中执行某些操作时需要动态,那么您可能希望GET / POST到控制器操作以呈现新视图 - 或者您将要调用控制器操作以使用ajax呈现部分视图。 / p>