使用MVC-3,Razor:
- MyController --
public ActionResult Index(String message) // where message = "hello"
{
ViewModel.Test1 = "This is a test";
ViewModel.Test2 = "This is another test. " + message;
}- Index.cshtml --
@Html.Label((string)View.Test1)
<br />
@Html.Label((string)View.Test2)为什么它只会呈现以下内容?
<label for="This is a test">This is a test</label>
<br />在过去的几天里,它完全让我抓狂,而且似乎没有任何意义。这肯定是有原因的。
我可以对其进行调试,并逐步通过w视图。在视图中,我看着这一行被处理,View.Test2的值是“这是另一个test.hello”。
我在一些案例中执行了以下操作,并且运行良好。
(例如)
ViewModel.Something = this.readDataService.GetSomething();有什么关系呢?
谢谢,
抢夺
发布于 2011-03-03 13:38:33
看起来您使用的是ASP.NET MVC3的RC2之前的版本。ViewModel在RC2中被更改为ViewBag (请参阅Scott Guthrie的this post )。
在控制器MVC3的早期预览中,我们在ASP.NET基类上使用了名为“ViewModel”的动态属性,并在视图模板中使用了名为“ViewModel”的动态属性。许多人发现有两个不同的名称令人困惑,一些人还说在这种情况下使用名称ViewModel是令人困惑的-因为您经常在ASP.NET MVC中创建强类型的ViewModel类,而他们并不使用这个接口。
使用RC2,我们在控制器和视图中公开了一个具有相同名称的动态属性-- ViewBag。
而且看起来确实像是在尝试使用ViewModel作为视图的强类型模型。相反,可以创建一个类作为模型,然后使用@Html.LabelFor
public class PersonModel
{
public string Name { get; set; }
}在控制器中:
PersonModel model = new PersonModel { Name = "John" };
return View(model);在视图中:
@Html.LabelFor(model => model.Name): @Html.TextBoxFor(model => model.Name)它会渲染:
<label for="Name">Name</label>: <input id="Name" name="Name" type="text" value="John" />HTH
https://stackoverflow.com/questions/5176631
复制相似问题