需要一种数据输入矩阵

时间:2012-05-02 07:01:32

标签: asp.net-mvc

我需要为从A点到B点所需的天数建立某种矩阵。

这应该是这样的:

enter image description here

每个起点/终点都存储在一个表中(名为Stop):

public class Stop
{
    [Key]
    public int StopID { get; set; }
    public string StopCode { get; set; }
}

矩阵的数据应存储在另一个表中:

public class Matrix
{
    [Key]
    public int MatrixID { get; set; }
    public int OriginStopID { get; set; }
    public int DestinationStopID { get; set; }
    public int NumberOfDays { get; set; }
}

我需要一个视图,允许用户在此矩阵中输入数据。 我怎样才能实现这一目标?我不知道。

感谢。

1 个答案:

答案 0 :(得分:0)

你可以使用基于两个视图模型的复杂模型来创建表单或使用基于数组的简单模型。

以下是可以完成的非常简单的示例(如果需要,我可以使用两个ViewModel制作更复杂的示例)。

视图模型:

public class TestViewModel
{
    public int[][] Matrix { get; set; }

    public TestViewModel()
    {            
    }

    public TestViewModel(string i)
    {
        Matrix = new int[4][] { new int[4] { 1, 2, 3, 4 }, new int[4] { 1, 2, 3, 4 }, new int[4] { 1, 2, 3, 4 }, new int[4] { 1, 2, 3, 4 } };
    }
}

控制器:

    public ActionResult Test()
    {
        return View(new TestViewModel("sa"));
    }

    [HttpPost]
    public ActionResult Test(TestViewModel model)
    {
        //some business logic goes here
        //ViewModel to Model convertion goes here
        return View(model);
    }

查看:

@model TestViewModel
@using (Html.BeginForm())
{
    <div class="form_block">
        @for (int i = 0; i<Model.Matrix.Length;i++)
        {
            for (int j = 0; j<Model.Matrix[i].Length;j++)
            {
                    @Html.TextBoxFor(x=>x.Matrix[i][j])
            }
        }
    </div>
    <div class="submit_block">
        <input type="submit" value="Сохранить изменения" />
    </div>
}