我认为您无法DataTable
在提交时绑定,或者至少这不是一个很好的概念。查看DataTable
http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx的文档。将所有数据发送到客户端并在服务器上取回以重建DataTable
对象太复杂了。
您最好从DataTable
自己的模型类中提取数据,然后尝试在提交时绑定它。不要忘记以视图的形式包含隐藏的输入,这样数据将被发布到服务器并可以被绑定。
更新 - 刚刚添加了一些可以帮助您解决问题的代码片段
// some service for data retrieval
public interface IUserService{
/// <summary>
/// Extracts MyUserInfo object from DataTable (or excel)
/// </summary>
MyUserInfo GetUserInfo(int id);
void SaveUserInfo(MyUserInfo userInfo);
}
// model class
public class MyUserInfo
{
public int UserId { get; set; }
public string Name { get; set; }
}
//controller
public class MyController : Controller
{
IUserService userService;
[HttpGet]
public ActionResult UserInfo(int userId)
{
var user = userService.GetUserInfo(userId);
return View(user);
}
[HttpPost]
public ActionResult UserInfo(MyUserInfo myUserInfo)
{
userService.SaveUserInfo(myUserInfo);
return RedirectToAction("SomeOtherAction","OnControllerOfYourChoice");
}
}
看法
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyUserInfo>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("UserInfo","MyController"))
{ %>
<label>UserName:</label>
<%= Model.Name %>
<%= Html.HiddenFor(m => m.UserId) %>
<%= Html.HiddenFor(m => m.Name) %>
<input type="submit" name="ConfirmUser" value="Confirm" />
<%} %>
</asp:Content>