编辑:
添加更多背景: 我开发了一个客户端应用程序,可用于定义烛台模式以自动分析股票或股票市场。现在我提出这样的想法,即使用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;
}
所以看起来基础对象列表中缺少一些东西?我怎样才能做到这一点?