如何在View中打印? ASP.NET MVC

时间:2016-01-15 16:59:26

标签: asp.net-mvc

我的控件

中有以下操作
public ViewResult CreateCollection() 
    { 
        string[] stringArray = { "apple", "orange", "plum" }; 
        List<int> intList = new List<int> { 10, 20, 30, 40 }; 
        Dictionary<string, int> myDict = new Dictionary<string, int> { { "apple", 10 }, { "orange", 20 }, { "plum", 30 } };
        return View("Result", (object)stringArray[1]);
    }

所以,当我想要打印出来时,&#34;橙色&#34; 我使用这个视图:

    @model String
@{    Layout = null; } 
<!DOCTYPE html> 
<html> 
<head>    
    <meta name="viewport" content="width=device-width" />    
    <title>Result</title> 
</head> 
<body>    
    <div>        
    @Model    
    </div> 
</body> 
</html>

如果我要打印&#34; 20&#34 ;,则从intList中打印一个号码 我将View @model String更改为@model int并在操作中将return parametar stringArray更改为intList。

但我不知道如何从myDict打印任何东西,任何人?

1 个答案:

答案 0 :(得分:0)

创建专用视图模型

public class ViewModel
{
   public Dictionary<string, int> Fruits {get; set;}
   public string SelectedFruit {get; set;}
}

更改控制器操作,以便返回包含新ViewModel

实例的视图
public ActionResult CreateCollection() 
    { 
        string[] stringArray = { "apple", "orange", "plum" }; 
        List<int> intList = new List<int> { 10, 20, 30, 40 }; 
        Dictionary<string, int> myDict = new Dictionary<string, int> { { "apple", 10 }, { "orange", 20 }, { "plum", 30 } };
        var model = new ViewModel
        {
             SelectedFruit = stringArray[1],
             Fruits = myDict 
        }
        return View("Result", model );
    }

更改视图以获取ViewModel作为模型:

@model LanguageFeatures.Models.ViewModel
@{    Layout = null; } 
<!DOCTYPE html> 
<html> 
<head>    
    <meta name="viewport" content="width=device-width" />    
    <title>Result</title> 
</head> 
<body>    
    <div>        
    Selected Fruit: @Model.SelectedFruit 
    </div> 
    <div>        
    Quantity: @Model.Fruits[Model.SelectedFruit]  
    </div> 
</body> 
</html>

您希望在视图中使用的所有信息都必须是模型的一部分的底线(您可以使用ViewBag,Session,ViewData,但它不是将数据传递给视图的首选方式),控制器是负责实例化该模型的那个