私はあなたが提出時に拘束することができるとは思わない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>