Asp.net MVC GridView的编辑列选项(Asp.net MVC GridView ed

2019-09-27 11:12发布

我的观点:

<%= 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的从编辑按钮,我指向/搜索/编辑页面,我明白我必须控制器//查找/编辑一些代码,但我没有得到的文本框,我可以编辑文本在结果单元格。 我是新来的MVC任何人都可以直接我在哪里,我应该从这里去,有什么建议?

Answer 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()方法。 视图模型应该是没有什么比你使用将数据从控制器传输到您的视图中的容器更容易。 将数据放入一个视图模型是控制器的责任。



文章来源: Asp.net MVC GridView edit columns option