Asp.net 如何在MVC中将数据集从控制器传递到视图
实际上,我的设想是: 将数据从excel导入数据库。 在这里,我通过viewbag将数据集从控制器传递到视图。 现在我需要在弹出窗口中将该数据集绑定到gridview。 在我看来,一个按钮是存在的,点击按钮,弹出窗口将出现。 但当我从一个控制器返回到另一个视图时,它显示的是按钮,而不是弹出窗口 我认为:Asp.net 如何在MVC中将数据集从控制器传递到视图,asp.net,asp.net-mvc,popup,devexpress,Asp.net,Asp.net Mvc,Popup,Devexpress,实际上,我的设想是: 将数据从excel导入数据库。 在这里,我通过viewbag将数据集从控制器传递到视图。 现在我需要在弹出窗口中将该数据集绑定到gridview。 在我看来,一个按钮是存在的,点击按钮,弹出窗口将出现。 但当我从一个控制器返回到另一个视图时,它显示的是按钮,而不是弹出窗口 我认为: <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <h2>Im
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h2>ImportExcel</h2>
<div align="center">
<% Html.DevExpress().Button(
settings =>
{
settings.Name = "btn_Import";
settings.Text = "Import Excel Sheet";
settings.UseSubmitBehavior = true;
}).Render(); %>
</div>
<%: Html.DevExpress().PopupControl(
settings =>
{
settings.Name = "pcModalMode";
settings.Width = 400;
settings.AllowDragging = true;
settings.CloseAction = CloseAction.CloseButton;
settings.PopupElementID = "btn_Import";
settings.PopupAnimationType = AnimationType.None;
settings.HeaderText = "Upload Email Addresses (XLS/XLSX)";
settings.Modal = true;
settings.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
settings.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
settings.SetContent(() =>
{
using (Html.BeginForm("ImportExcel", "PopUp", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
Html.Hidden("ID");
ViewContext.Writer.Write("<div class=\"line\">");
Html.DevExpress().Label(
labelSettings => {
labelSettings.Text = "Choose Your File:";
}
)
.Render();
Html.DevExpress().UploadControl(Usettings =>
{
Usettings.Name = "ImportData";
Usettings.CallbackRouteValues = new { Controller = "PopUp", Action = "Upload" };
Usettings.Width = Unit.Pixel(380);
Usettings.NullText = "Click here to browse files...";
Usettings.ShowProgressPanel = true;
}).Render();
ViewContext.Writer.Write( "</div><div class=\"line\">");
Html.DevExpress().Button(
buttonSettings => {
buttonSettings.Name = "btnUpload";
//buttonSettings.ControlStyle.CssClass = "button";
//buttonSettings.Width = 80;
buttonSettings.Text = "Upload";
buttonSettings.UseSubmitBehavior = true;
}
)
.Render();
Html.DevExpress().Button(
buttonSettings => {
buttonSettings.Name = "btnCancel";
//buttonSettings.ControlStyle.CssClass = "button";
buttonSettings.Width = 80;
buttonSettings.Text = "Cancel";
buttonSettings.ClientSideEvents.Click = "function(s, e){ pcModalMode.Hide(); }";
}
)
.Render();
ViewContext.Writer.Write("</div><b class=\"Clear\"></b>");
DataSet ds = (DataSet)ViewBag.imp;
}
});
settings.ClientSideEvents.CloseUp = "function(s, e){ ASPxClientEdit.ClearEditorsInContainer(null, '', true); }";
}).GetHtml()
%>
您能提供您的代码吗?devexpress是一个第三方付费/商业图书馆。顺便说一句,代码实际上不是MVC架构中的“视图”。只是一个与MVC控制器一起工作的经典asp.net Web表单。为什么不直接与DX联系呢?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ImportExcel(FormCollection form)
{
UploadedFile[] files = UploadControlExtension.GetUploadedFiles("ImportData");
StringBuilder strValidations = new StringBuilder(string.Empty);
try
{
if (files[0].ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"),
Path.GetFileName(files[0].FileName));
files[0].SaveAs(filePath);
DataSet ds = new DataSet();
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("../Uploads/") + files[0].FileName + ";Extended Properties=Excel 12.0";
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
conn.Open();
using (DataTable dtExcelSchema = conn.GetSchema("Tables"))
{
string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
string query = "SELECT * FROM [" + sheetName + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
adapter.Fill(ds1, "Items");
ViewData["Mydataset"] = ds1;
ViewBag.imp = ds1;
ViewBag.text = "FIrst";
}
}
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
return View();
}