Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取HTML中的控制器属性,是否所有内容都要放在viewbag中?_C#_Html_Asp.net Mvc_Razor - Fatal编程技术网

C# 获取HTML中的控制器属性,是否所有内容都要放在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来存储将显示在页面上的任何内容

在控制器中,我只需键入
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作为参数传递。现在一切都有意义了!