我需要一种矩阵来编辑值。到目前为止,这是我的结果:
所以我有一个非常大的表格(由几个文本框组成)。我仍然需要在标题中添加标题文本,但这只是一个测试。
我的解决方案有两个问题:
当我专注于矩阵中的数字来改变它时,专注于这些文本框需要时间。
当我单击提交时,我收到一个错误,因为要返回的元素太多。
我尝试使用更少的数据并且效果更好:在不同的文本框中更快地改变焦点并且提交工作得很好。
这是我的控制器操作:
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 对话框中对其进行编辑。你怎么看?
不管怎么说,还是要谢谢你。