我做到了。但是出現錯誤消息: 沒有爲此對象定義的無參數構造函數。 我只有一個動作是:
public ActionResult Edit(IndexViewModel ind)
{
Do s.t .
return View();
}
我的視圖模型爲:
public class GridModel
{
//public GridModel() { }
public GridModel(List<object> GridDataSource, string GridName, int RecordCount,
int PageRecordCount, int CurrentPageIndex, string Controller, string ActionName, string TargetID)
{
this.GridDataSource = GridDataSource;
this.GridName = GridName;
this.RecordCount = RecordCount;
this.PageRecordCount = PageRecordCount;
this.CurrentPageIndex = CurrentPageIndex;
this.Controller = Controller;
this.ActionName = ActionName;
this.TargetID = TargetID;
}
public List<string> classNameList = new List<string>();
public List<object> GridDataSource { get; set; }
public string GridName { get; set; }
public int RecordCount { get; set; }
public int PageRecordCount { get; set; }
public int CurrentPageIndex { get; set; }
public string Controller { get; set; }
public string ActionName { get; set; }
public string TargetID { get; set; }
private Dictionary<string, string> styles =
new Dictionary<string, string>();
private Dictionary<string, string> columns=
new Dictionary<string, string>();
[ReadOnly(true)]
public enum GridClasses
{
GridTable,
GridHeader,
GridBody,
GridFooter,
GridAlternativeRow,
GridPager
}
/// <summary>
///
/// </summary>
/// <param name="GridClass">Chose yor class from GridModel.GridClass Enum</param>
/// <param name="CssStyle">Enter full css attribute and values in a string format. Something like this :
/// "color:red; font-size:10px;"</param>
public void SetGridStyle(GridModel.GridClasses GridClass, string CssStyle)
{
if (styles.ContainsKey(GridClass.ToString()))
styles[GridClass.ToString()] = CssStyle;
else
styles.Add(GridClass.ToString(), CssStyle);
}
/// <summary>
///
/// </summary>
/// <returns>Return: The CSS style of getted class in CSS originall format.</returns>
public string GetGridStyle(GridModel.GridClasses GridClass)
{
if (styles.ContainsKey(GridClass.ToString()))
{
return " GridContainer" + GridName + " ." + GridClass.ToString() + "{" + styles[GridClass.ToString()] + "}";
}
else
return "";
}
/// <summary>
///
/// </summary>
/// <returns>Return: The CSS style of all classes of grid in CSS originall format.</returns>
public string GetGridStyle()
{
string css = "";
foreach(KeyValuePair<string, string> d in styles)
if(d.Key == GridClasses.GridAlternativeRow.ToString())
css += " #GridContainer" + GridName + " ." + GridName + d.Key + " tr:nth-child(even){" + d.Value + "} ";
else if (d.Key == GridClasses.GridPager.ToString())
css += " #GridContainer" + GridName + " ." + GridName + d.Key + " span{" + d.Value + "} ";
else
css += " #GridContainer" + GridName + " ." + GridName + d.Key + "{" + d.Value + "} ";
return css;
}
public void SetColumnsStyle(string ColumnName, string CssStyle)
{
if (columns.ContainsKey(ColumnName))
columns[ColumnName] = CssStyle;
else
columns.Add(ColumnName, CssStyle);
}
public string GetColumnStyle()
{
string css = "";
foreach (KeyValuePair<string, string> d in columns)
css += " #GridContainer" + GridName + " ." + GridName + d.Key + "{" + d.Value + "} ";
return css;
}
public List<string> GetStyledColumns()
{
List<string> l = new List<string>();
foreach (KeyValuePair<string, string> d in columns)
l.Add(d.Key);
return l;
}
public string EditController = "";
public string EditAction = "";
public bool IsInEditMode = false;
public string GridCssClass = "webgrid";
}
而且我的新觀點是:
@using (Html.BeginForm("Edit", "Home", FormMethod.Post, Model))
{
int listNumber = 0;
<div id="lll">
@Html.TextBoxFor(m => m.ATempProperty)
@foreach(WebApplication1.Models.GridModel l in Model.GridList)
{
@Html.HiddenFor(m => m.GridList[listNumber].GridName);
@Html.HiddenFor(m => m.GridList[listNumber].PageRecordCount);
}
</div>
<input type="submit" value="Submit" />
}
你需要渲染GridList'的'每個屬性在'for'循環中,但是如果它們都是隱藏的控件,它又有什麼意義呢(一般來說性能更好,只需從後臺獲取集合即可) – 2014-10-28 06:32:40
爲什麼你想發送數據回服務器已經有服務器?數據是否在客戶端更改,如果是隻發送更改的數據?我希望你意識到重點是接收來自USER的輸入並將該數據發送到服務器。 – SBirthare 2014-10-28 07:35:37