我在访问模型的其中一个属性时遇到问题,我正在传递一个View。
模型的定义如下:
public class ProductBasket
{
public ProductBasket()
{
Products = new List<ProductConfiguration>();
Errors = new List<string>();
}
public List<ProductConfiguration> Products { get; set; }
public List<string> Errors { get; set; }
}
在我看来,模型指令声明如下:
@model MyApp.ViewModels.Product.ProductBasket
我无法访问Products
循环中的foreach
属性。在VisualStudio中,当我将Model
变量悬停在循环中时,它显示:
List<MyApp.ViewModels.Product.ProductConfiguration>
WebViewPage<List<MyApp.ViewModels.Product.ProductConfiguration>>.Model { get; }
这是我以前使用的之前的模型 - 我不知道为什么会这样?
我做了什么
Instinct告诉我,我应该可以使用Model.Products
访问Products属性(请告诉我这是不正确的),但我不明白为什么视图没有通过ProductBasket
?
答案 0 :(得分:2)
看起来您正在将ProductBasket
类对象的集合传递给视图。确保从您的操作方法
public ActionResult Something()
{
var vm = new ProductBasket();
//The below line is hard coded for demo. You may replace with actual list from db.
vm.Products.Add(new ProductConfiguration { Id=1,Name="test"});
return View(vm);
}
类的单个对象
ProductConfiguration
假设您的ProductBasket
类具有Id和Name属性。
您的观点应该绑定到@model YourNameSpaceHere.ProductBasket
<h1>Products</h1>
@foreach(var product in Model.Products)
{
<h2>@product.Name</h2>
}
func findMatchPlease() {
let matchRequest = GKMatchRequest()
matchRequest.minPlayers = 2
matchRequest.maxPlayers = 2
let mmvc = GKMatchmakerViewController(matchRequest: matchRequest)
mmvc.matchmakerDelegate = self
let viewController = self.scene?.view?.window?.rootViewController
viewController?.presentViewController(mmvc, animated: true, completion: nil)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>) {
var touch: UITouch = touches.first as! UITouch
var location = touch.locationInNode(self)
var node = self.nodeAtPoint(location)
if node.name == "find" {
var goToMatch = GamePlay(size: self.size)
var transitionToMatch = SKTransition.fadeWithDuration(1.0)
goToMatch.scaleMode = SKSceneScaleMode.AspectFill
self.scene!.view?.presentScene(goToMatch, transition: transitionToMatch)
findMatchPlease()
}
}
}