Параметр редактирования столбцов Asp.net MVC GridView

У меня есть мнение:

<%= 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, может ли кто-нибудь направить меня, куда я должен идти, какие-либо предложения?


person remo    schedule 04.04.2011    source источник


Ответы (1)


Скорее всего, это сравнение всегда возвращает false: item => (Model.data == item). Это предотвратит отображение поля редактирования.

Попробуйте переписать сравнение как сравнение простых значений (например, идентификаторов) или реализовать Equals в вашем классе данных и используйте его вместо ==

[Обновление]

Сравнение используется, чтобы решить, какие строки должны отображаться в режиме редактирования, где true означает «отобразить строку в режиме редактирования».

Допустим, вы хотите отредактировать строку, соответствующую элементу с заданным идентификатором. Тогда ваше сравнение будет похоже на это 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(). Модель представления должна быть не чем иным, как контейнером, который вы используете для передачи данных от вашего контроллера к вашему представлению. Ответственность за размещение данных в модели представления лежит на контроллере.

person Marnix van Valen    schedule 05.04.2011
comment
Как я могу узнать, какое равенство я проверяю здесь, Model.data - это список типов объектов с различными свойствами, и похоже, что элемент будет только одним объектом, как я могу сравнить, чтобы найти, какой из них я ищу в этом списке? Теперь я полностью запутался :(. Можете ли вы пролить свет на этот метод .action и как связать его со строками здесь? - person remo; 05.04.2011
comment
@sharma Я обновил свой ответ. Надеюсь, это проясняет ситуацию. - person Marnix van Valen; 05.04.2011