我有观点:
<%= Html.Grid(Model.data).Columns(column => {
column.For(x => x.results)
.Action(item => Html.ActionLink(item.results,"Edit").ToString(),
item => Html.TextBox("result",item.results).ToString(),
item => (Model.data == item))
.Named("Results");
column.For(x => x.refId)
.Named("Reference ID");
column.For(x => x.fileLocation)
.Named("File Location");
})
.Attributes(style => "width:100%", border => 1)
控制器看起来像:
public ActionResult Index()
{
// IEnumerable<TranslationResults> results;
StringSearchResultsModelIndex modelInstance = new StringSearchResultsModelIndex();
modelInstance.getData();
return View("SearchGUIString", modelInstance);
}
数据:
public class StringSearchResultsModelIndex : IStringSearchResultsModelIndex
{
private IEnumerable<StringSearchResultModel> m_data;
private string id;
public IEnumerable<StringSearchResultModel> getData()
{
List<StringSearchResultModel> models = new List<StringSearchResultModel>();
StringSearchResultModel _sModel = new StringSearchResultModel();
for (int i = 1; i < 11; i++)
{
_sModel = new StringSearchResultModel();
_sModel.fileLocation = "Location" + i;
_sModel.refId = "refID" + i;
_sModel.results = "results" + i;
models.Add(_sModel);
}
m_data = models;
return models;
}
public IEnumerable<StringSearchResultModel> data { get { return m_data; } set { m_data = value; } }
public string SelectedRowID {get {return id ; } set { id = value; } }
}
当我从ActionLink单击编辑按钮时,我被定向到/ search / Edit页面,我知道我需要在控制器中有一些代码//搜索/编辑但是我没有得到文本框我可以编辑结果单元格中的文本。我是MVC的新手可以任何人指导我,我应该从这里开始,有什么建议吗?
答案 0 :(得分:1)
这种比较最有可能总是返回false:item => (Model.data == item)
。
这将阻止显示编辑框。
尝试重写比较作为简单值(例如id)之间的比较或在数据类上实现Equals并使用它来代替==
<强> [更新] 强>
比较用于决定在编辑模式下应显示哪一行,其中true
表示“在编辑模式下渲染行”。
假设您要编辑与具有给定ID的项目对应的行。然后,您的比较将与此item => item.Id == Model.SelectedRowId
类似。
在您的控制器中,您可以执行以下操作:
public ActionResult Edit(string id)
{
var model = new StringSearchResultsModelIndex();
model.getData();
model.SelectedRowId = id;
return View("SearchGUIString", model);
}
请注意,您需要将SelectedRowId
属性添加到视图模型类中。
另外,我建议您不要让视图模型在getData()
方法中加载自己的数据。视图模型应该只是用于将数据从控制器传输到视图的容器。将数据放入视图模型是控制器的责任。