1

私はビューを持っています:

<%= 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 ページが表示されます。コントローラーに //search/Edit 用のコードが必要であることは理解していますが、テキストを編集できるテキスト ボックスが表示されません。結果セルで。私は MVC を初めて使用しますが、ここからどこに行くべきかを誰かに教えてもらえますか?何か提案はありますか?

4

1 に答える 1

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()。ビューモデルは、コントローラーからビューにデータを転送するために使用するコンテナーにすぎません。データをビューモデルに入れるのはコントローラーの責任です。

于 2011-04-05T12:54:12.763 に答える