値を編集するには一種のマトリックスが必要です。これまでの私の結果は次のとおりです。
だから私は非常に大きな種類のテーブル(いくつかのテキストボックスで構成されています)を持っています。見出しにキャプション テキストを追加する必要がありますが、これは現時点では単なるテストです。
私のソリューションには2つの問題があります:
マトリックスの数値に注目して変更すると、これらのテキストボックスに注目するのに時間がかかります。
送信をクリックすると、返す要素が多すぎるため、エラーが発生しました。
より少ないデータで試してみると、うまく機能します。さまざまなテキストボックスでフォーカスをすばやく変更すると、送信がうまくいきます。
これが私のコントローラーアクションです:
public ActionResult Index()
{
var dto = _requestServiceClient.GetMatrices();
var vm = new List<MatrixVM>();
var viewModel = new MatrixIndexViewModel();
Mapper.Map(dto, vm);
viewModel.Matrix = vm;
return View(viewModel);
}
[HttpPost]
public ActionResult Index(MatrixIndexViewModel viewModel)
{
return View(viewModel);
}
私が使用するモデルは次のとおりです。
public class MatrixIndexViewModel
{
public List<MatrixVM> Matrix { get; set; }
}
public class MatrixVM
{
public int MatrixID { get; set; }
public int OriginStopID { get; set; }
public string OriginStopText { get; set; }
public int DestinationStopID { get; set; }
public string DestinationStopText { get; set; }
public int NumberOfDays { get; set; }
}
これが私の見解です:
@model PLATON.WebUI.Areas.Admin.ViewModels.Matrix.MatrixIndexViewModel
@using PLATON.WebUI.App_LocalResources
@{
Layout = "~/Areas/Admin/Views/Shared/_Layout.Admin.cshtml";
ViewBag.Title = UserResource.Matrix;
double nbrStops = Math.Sqrt(Model.Matrix.Count());
Html.EnableClientValidation(false);
}
@using (Html.BeginForm())
{
for (int count = 0; count < Model.Matrix.Count(); count++)
{
if (count % nbrStops == 0)
{
// Displaying heading text for each lines
@Html.DisplayFor(x => x.Matrix[count].OriginStopText)
}
@Html.HiddenFor(x => x.Matrix[count].MatrixID)
@Html.HiddenFor(x => x.Matrix[count].OriginStopID)
@Html.HiddenFor(x => x.Matrix[count].DestinationStopID)
@Html.TextBoxFor(x => x.Matrix[count].NumberOfDays, new { style = "width:13px" })
if (count % nbrStops == nbrStops - 1)
{
// Proceed next line
@:<br />
}
}
<div class="submit_block">
<input type="submit" class="btn primary" value="Enregistrer" />
</div>
}
より良い実装のアイデアはありますか? おそらく、より良いアイデアは、「読み取り専用」のマトリックスを作成し、要素をクリックしてjqueryダイアログで編集できるようにすることです。どう思いますか?
とにかくありがとう。