2017-11-20 12 views
0

私はASP.NET Coreを初めて使用しているので、まだ理解しようとしています。ASP.NET Core - コード中のひげそりのオブジェクト

私はコードの背後にあるオブジェクトからアクセスしようとしていました。出来ますか?私は数時間努力して検索してきましたが、まだ理解していません。私は腹を立てようとしたことのいくつかを残すでしょう、明らかに動作していない。私はこれについていくつかの洞察を得ることができれば、私はそれを非常に感謝します。

古典的なASP.NETでは、私はいつもコードの背後からクライアント側へのIDアプローチに慣れています。しかし、今私は別のアプローチを試みるように求められてきました。この場合、ループです。これどうやってするの?私はまた、Microsoftのドキュメントを読んできましたが、私はまだこれを理解することはできません。私はいくつかの助けに感謝します。

// The controller 
public class HomeController : Controller 
    { 
     public GetInfo GetInfo { get; set; } 
     public IActionResult Offers() 
     { 

      GetInfo = new GetInfo(); 

      GetInfo.GetOffers(); 

      return View(); 
     } 
    } 


// The GetInfo class which gets data from a JSON file 
public class GetInfo 
    { 
     public Offer.RootObject Offers { get; set; } 

     public void GetOffers() 
     { 
      var client = new RestClient("whatever.com"); 
      // client.Authenticator = new HttpBasicAuthenticator(username, password); 

      var request = new RestRequest("Home/GetOffersJson", Method.GET); 
      IRestResponse response = client.Execute(request); 
      var content = response.Content; 

      var obj = JsonConvert.DeserializeObject<Offer.RootObject>(content); 

      Offers = new Offer.RootObject 
      { 
       total = obj.total, 
       data = obj.data 
      }; 


     } 
    } 

// The View file, where I'm trying to access the object from c#, which supposedly is 'loaded' 
@model HostBookingEngine_HHS.Models.GetInfo; 
@{ 
    ViewData["Title"] = "Offers"; 


} 

    @foreach (var item in Model.Offers.data) 
    { 
     <span asp-validation-for="@item.TextTitle"></span> 

    } 

おかげで、事前に:

は、ここで私が試したもののスピンネットです。

+1

ビューにモデルを渡す必要があります。例えば、View(GetInfo)を返します。 –

+0

ありがとうございます。私はちょうど今働くようになった、答えに示唆されるように。そしてそれはそれでした。それでも、ありがとう! :) – taiko

答えて

1

Offersを表示するには、モデルをView()メソッドの引数としてビューに渡す必要があります。だからあなたの場合には次のようなあなたの行動を見て行う必要があります。これらは、

public IActionResult Offers() 
{ 
    GetInfo = new GetInfo(); 
    GetInfo.GetOffers(); 
    return View(GetInfo); 
} 
+0

それだけです!わかった。私はクライアント側でモデルを宣言しましたが、アクセスするためにはそれを渡す必要がありました。ああ、これはとても混乱することがあります。ありがとう! :) – taiko

2

asp.netコアビューがロードオーバー4を持っている

public virtual ViewResult View(); 
public virtual ViewResult View(string viewName, object model); 
public virtual ViewResult View(object model); 
public virtual ViewResult View(string viewName); 

ASP.NETコアは、正確なパラメータを使用してこれらのすべてを使用することができます Public Virtual ViewResult View(オブジェクトモデル)を使用してモデルオブジェクトを渡すことができます。あなたが実際に

@model HostBookingEngine_HHS.Models.GetInfo; 

あなたのパラメータオブジェクトにアクセスし、この

return View(GetInfo); 

のようなあなたのモデルオブジェクトを渡す必要があり

はまたViewBag同様

を表示するためにデータを渡すにはいくつかの方法があります、ViewData(各リクエストの値を取得します)。

関連する問題