ASP.NET核心 - 代码背后来自剃刀的访问对象

时间:2017-11-20 16:36:36

标签: c# json razor asp.net-core

我是ASP.NET Core的新手,所以我仍然试图理解它。

我试图从后面的代码中访问一个对象。可能吗?我一直在努力寻找几个小时,我还没有理解它。我会留下一些我试过的东西,这显然是行不通的。如果我能对此有所了解,我会非常感激。

在经典ASP.NET中,我总是从代码隐藏到客户端的id方法。但现在我被要求尝试不同的方法。在这种情况下,循环。我怎样才能做到这一点?我也一直在阅读微软文档,但我仍然无法理解这一点。我很感激一些帮助。

这是我尝试的一个spinnet:

// 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>

    }

提前谢谢。

2 个答案:

答案 0 :(得分:2)

asp.net核心视图有四个过载这些都是

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 Core可以将所有这些与精确参数一起使用 您可以使用公共虚拟ViewResult视图(对象模型)传递模型对象;

您需要像这样传递模型对象

return View(GetInfo);

实际访问您的参数对象

@model HostBookingEngine_HHS.Models.GetInfo;

还有几种传递数据的方法

与ViewBag一样,ViewData也可以获取每个请求中的值。

答案 1 :(得分:1)

要让Offers可用于视图,您必须将模型作为View()方法的参数传递给视图。因此,在您的情况下,您必须使您的行动看起来像:

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