7

問題は: 3 つの異なるアクションを実行したいのですが、その代わりに、より大きなモデルの単一のアクションからすべてのデータを供給したいと考えています。

私は使っている:

public class SearchScrapClass
    {
        public WClass WClass { get; set; }
        public SClass SClass { get; set; }
        public YClass YClass { get; set; }
    }

    public class WClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }
    public class SClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }
    public class YClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }

これらのモデルにデータを追加するために LINQ を使用しています。

私は使っている :

      var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='span']")
        from link in info.SelectNodes("div//a").Where(x => x.Attributes.Contains("href"))
         select new SearchScrapClass //Main Bigger Class
         {
            WClass.link= link.Attributes["href"].Value, //ERROR: How to add to WClass's url ?
            WClass.title= link.InnerText //ERROR: How to add to WClass's url ?
         }


var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='results']")
               from link in info.SelectNodes("p//a").Where(x => x.Attributes.Contains("href"))
               select new SearchScrapClass //Main Bigger Class
                 {
                   YClass.link= link.Attributes["href"].Value, //ERROR: How to add to YClass's url ?
                   YClass.title= link.InnerText //ERROR: How to add to YClass's url ?
                 }

//Also for the 3rd class (model)


    return View(wikians); //and then return bigger class model so that i can access them in view

これは、すべてのクラスのリンクタイトルにデータを追加したい 1 つの方法です。

私の試みは、異なるソースから3つのクラスすべてにデータを追加し、より大きなモデルをビューに渡して、すべてのクラスに次のようにアクセスできるようにすることです:

@model SearchScrapClass
@using(Html.BeginForm()) {
    @Html.EditorFor(o => o.WClass.link)
    ...
}

方法を提案してください

ありがとう

4

4 に答える 4

8

私のコメントを拡張するには、整理のために ViewModel フォルダーを作成することをお勧めします。これにビューモデルを追加します

public class SearchScrapClassViewModel
{
    SearchScrapClass searchScrap;
    WClass wClass;
    SClass sClass;
    YClass yClass;
}

コントローラーで、新しいビューモデルをインスタンス化します

SearchScrapClassViewModel model = new SearchScrapClassViewModel
{
    ....add in your logic to fill your class objects here


}

return view(model);

次に、ビューにビューモデルの使用を追加します。

@using SearchScrapClassViewModel
于 2012-06-05T17:24:37.917 に答える
1

複数のオブジェクトを含む新しいモデル クラスを作成することで、複数のモデルを渡すことができます。

public class MultiModel 
    {
     SearchScrapClass searchScrap;
     WClass wClass;
     SClass sClass;
     YClass yClass;
    }
于 2012-06-05T16:50:08.137 に答える
1

タプル チュートリアルhttp://www.dotnetperls.com/tupleまたはこれhttp://msdn.microsoft.com/en-us/library/system.tuple(v=vs.110).aspxを参照してください。

コントローラーのように:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var first = new FirstModel();
        var second = new SecondModel();
        return View(Tuple.Create(first,second));
    }
}

そしてビュー:

@model タプル

<div> 
    @Model.Item1.FirstModelProp
    @Model.Item2.SecondModelProp
</div>
于 2014-10-08T10:01:24.483 に答える
0
SearchScrapClassViewModel model = new SearchScrapClassViewModel
{
    ....add in your logic to fill your class objects here


}

ここで適用するロジック " .... ここにクラス オブジェクトを埋めるためのロジックを追加"

于 2014-05-05T13:41:13.963 に答える