设置视图模型的数据,该模型是基础对象的自定义对象列表

时间:2016-08-19 12:34:51

标签: c# razor asp.net-mvc-5

编辑:

添加更多背景: 我开发了一个客户端应用程序,可用于定义烛台模式以自动分析股票或股票市场。现在我提出这样的想法,即使用ASP.net将其迁移到Web应用程序会更好,因为客户端应用程序是C#。好吧,我以为我已经拥有了所有模型,所以我“只”必须构建视图和控制器并完成...

无论如何,当我开发客户端应用程序时,我创建了一些常见的类,它们是我一直使用的框架的一部分。例如,这些基类之一是CBaseObjectList。其成员是List<> CBaseObecject。该类封装了几个函数,如添加,删除,排序,从数据库初始化,写入数据库等...

我最喜欢做的是使用这些类在视图中显示,添加,删除,更改数据。

这就是我的所作所为:

在控制器中,我从数据库初始化列表并使用列表作为参数调用视图:

public ActionResult ShowCandleStickPattern()
{

   // initialise list from data
   CCandleStickPattern_Lst patternLst  = new CCandleStickPattern_Lst();
   string SQL                          = "SELECT * FROM tab_candlestick_pattern";
   CDBCon_MySql pDBCon                 = CRM_Handler.GetDBCon();
   patternLst.InitListFromDB           (pDBCon, SQL, new CCandleStick_Pattern());

   return View(patternLst);
 }

列表中的值正确显示在视图中。但是当我更改一些显示的字段并提交时,[HttpPost]控制器函数中的列表始终为空。

  [HttpPost]
  public string ShowCandleStickPattern(CCandleStickPattern_Lst lst)
  {
    return lst.GetItemsCount().ToString();
  }

CCandleStickPattern_Lst如下所示:

public class CCandleStickPattern_Lst : CBaseObjectList 
{

  public List<CBaseObject> MyList
  {
    get { return m_MyList; }
  }
}

CBaseObjectList如下所示:

public class CBaseObjectList : CBaseObject
{
  protected List<CBaseObject> m_MyList = null;
}

protected CBaseObject AddNewItem_Base(CBaseObject pBaseObj) {...}
...

观点:

@model CCandleStickPattern_Lst

<h1>List of Candlestick pattern</h1>

@using (Html.BeginForm("ShowCandleStickPattern", "Home", FormMethod.Post))
{
    <table border="1" cellpadding="6">
        @for (int i = 0; i < Model.GetItemsCount(); i++)
        {
            <tr>
                <td>
                    @Html.EditorFor(model => ((CCandleStick_Pattern)model.MyList[i]).DB_ID)
                </td>
                <td>
                    @Html.EditorFor(model => ((CCandleStick_Pattern)model.MyList[i]).Pattern_Name);
                </td>
                <td>
                    @Html.EditorFor(model => ((CCandleStick_Pattern)model.MyList[i]).Pattern_Description);
                </td>
                <td>
                    @Html.EditorFor(model => ((CCandleStick_Pattern)model.MyList[i]).PatternType);
                </td>
            </tr>
        }
        <tr>
            <td colspan="4">
                <input type="submit" value="Submit" />
            </td>
        </tr>
    </table>
} 

当我向CCandleStickPattern_Lst添加新成员和属性时,我得到了这个工作,使用它而不是基类的baseobjects列表,并在视图中访问CandlePatternLst而不是MyList

private List<CCandleStick_Pattern> m_CandlePatternLst;
public List<CCandleStick_Pattern> CandlePatternLst {
    get return m_CandlePatternLst;
}

所以看起来基础对象列表中缺少一些东西?我怎样才能做到这一点?

0 个答案:

没有答案