C# 获取HTML中的控制器属性,是否所有内容都要放在viewbag中?
根据我在各种教程或简单的示例项目中所读到的内容,控制器使用ViewBag来存储将显示在页面上的任何内容 在控制器中,我只需键入C# 获取HTML中的控制器属性,是否所有内容都要放在viewbag中?,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,根据我在各种教程或简单的示例项目中所读到的内容,控制器使用ViewBag来存储将显示在页面上的任何内容 在控制器中,我只需键入ViewBag.AnythingIWant=“Foo”,它将在HTML中呈现。显然,这就是示例项目中所做的,至少是标题和各种文本 但是大多数文本都是用HTML硬编码的,显然我不希望这样。考虑到我对Xamarin(移动开发)中的C#或MVC并不陌生,我觉得我应该很快掌握这一点,但我没有。有人能向我澄清以下几点吗 我的控制器知道视图模型(它完成了大部分工作),他自己私下使用模
ViewBag.AnythingIWant=“Foo”代码>,它将在HTML中呈现。显然,这就是示例项目中所做的,至少是标题和各种文本
但是大多数文本都是用HTML硬编码的,显然我不希望这样。考虑到我对Xamarin(移动开发)中的C#或MVC并不陌生,我觉得我应该很快掌握这一点,但我没有。有人能向我澄清以下几点吗
我的控制器
知道视图模型
(它完成了大部分工作),他自己私下使用模型
。我(从iosdev)使用控制器作为UI的最后一层,在控制器中,我只需要所有标签和我想要的任何东西,我可以用ViewModel中可用的任何东西填充它们
这里有一个HTML层,我不知道如何连接到控制器
我有一种strong的感觉,把所有的东西都放在ViewBag中不是一种好办法。有没有人能简单地透露一下我在HTML中使用正确对象所缺少的部分
Razor可能是让我困惑的地方,考虑到我在控制器中公开添加的任何内容,我无法使用@MyProperty
在相关HTML中找到它
我知道这是一个相当宽泛的问题,但我知道我只遗漏了一小部分解锁所有内容的知识。如评论中所述,将ViewModel传递给要渲染的视图
控制器
public ActionResult Index() {
var viewModel = new MyViewModel { Name = "some string" };
return View("Index", viewModel);
}
Index.cshtml
@model MyViewModel @* Tell Razor which ViewModel to expect *@
@{ string name = Model.Name; }
如注释中所述,将ViewModel传递给要渲染的视图
控制器
public ActionResult Index() {
var viewModel = new MyViewModel { Name = "some string" };
return View("Index", viewModel);
}
Index.cshtml
@model MyViewModel @* Tell Razor which ViewModel to expect *@
@{ string name = Model.Name; }
只需将视图模型传递给视图,如asp.net mvc中所预期的那样。如果您有一个视图模型(您应该这样做),那么您就不需要使用ViewBag
。您可以在返回视图
结果时传递一个模型对象,这将是view用来渲染HTML的模型,将您的所有员工放在viewmodel中。ViewModel应该是简单的类,带有一些与UI相关的逻辑。没有商业逻辑。比如@Model.PageTitle.噢,好吧。您可以将参数添加到视图();该死的,这会改变一切。让我快速尝试一下,只需将视图模型传递给视图,正如asp.net mvc中所期望的那样。如果您有一个视图模型(您应该这样做),那么您就不需要使用ViewBag
。您可以在返回视图
结果时传递一个模型对象,这将是view用来渲染HTML的模型,将您的所有员工放在viewmodel中。ViewModel应该是简单的类,带有一些与UI相关的逻辑。没有商业逻辑。比如@Model.PageTitle.噢,好吧。您可以将参数添加到视图();该死的,这会改变一切。让我快速尝试一下,非常感谢:)就像我对其他人说的,我不知道在返回视图时应该将viewmodel作为参数传递。现在一切都有意义了!非常感谢:)就像我对其他人说的,我不知道在返回视图时应该将viewmodel作为参数传递。现在一切都有意义了!