C# 模型(变量)做什么?

C# 模型(变量)做什么?,c#,asp.net,asp.net-mvc,visual-web-developer,C#,Asp.net,Asp.net Mvc,Visual Web Developer,好的,我有这个代码: public ActionResult Welcome(string name = "", int numTimes = 1) { var viewModel = new WelcomeViewModel { Message = "Hello " + name, NumTimes = numTimes }; return View(viewMod

好的,我有这个代码:

    public ActionResult Welcome(string name = "", int numTimes = 1)
    {
        var viewModel = new WelcomeViewModel
        {
            Message = "Hello " + name,
            NumTimes = numTimes
        };

        return View(viewModel);
    }
    public class WelcomeViewModel
    {
        public string Message { get; set; }
        public int NumTimes { get; set; }
    }
Welcome()中的视图是:

欢迎您
首先,当我运行此命令时,我在运行…/Welcome?name=Scott&numtimes=4时出错,在命令行中这样说

<h3><%: Model.Message; %></h3>

它期望“')”

描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。 应为编译器错误消息:CS1026:)

为什么会这样



第二,整个模型是什么?它做什么?

我想你不需要在
Model.Message之后加分号


模型是对控制器中提供给视图的内容的引用。这与您键入的
返回视图(viewModel)的实例相同在控制器中

我认为您不需要在
Model.Message
后面加分号


模型是对控制器中提供给视图的内容的引用。这与您键入的
返回视图(viewModel)的实例相同在控制器中

关于第二个问题,MVC是一种将逻辑(在控制器中)与表示(在视图中)分离的方法

您可以使用控制器生成包含视图所需所有信息的模型

例如,对于表单,模型将为每个输入都有一个字段。对于表,它将有一个
IEnumerable

视图本身应该尽可能少地进行处理——简单的if语句和循环。所有实际逻辑都应限制在控制器上

一种方式是,开发人员编写控制器,设计师编写视图,他们为模型中的内容进行协作-设计师说“我需要知道X,Y,Z”-因此开发人员将它们添加到模型中,并根据需要填充字段


正如在另一个答案中提到的,Model.Message后面的分号是多余的。

关于第二个问题,MVC是一种将逻辑(在控制器中)与表示(在您的视图中)分离的方法

您可以使用控制器生成包含视图所需所有信息的模型

例如,对于表单,模型将为每个输入都有一个字段。对于表,它将有一个
IEnumerable

视图本身应该尽可能少地进行处理——简单的if语句和循环。所有实际逻辑都应限制在控制器上

一种方式是,开发人员编写控制器,设计师编写视图,他们为模型中的内容进行协作-设计师说“我需要知道X,Y,Z”-因此开发人员将它们添加到模型中,并根据需要填充字段

如另一个答案中所述,
Model.Message
后面的分号是多余的。

这是因为
基本上翻译成:

正如您所看到的,分号不应该在那里。编译器希望在分号之前有结束括号,因此会显示错误消息

“模型”是MVC中的M。模型是视图显示的数据。每个视图都有一个模型,因此模型包含视图所需的所有数据。

这是因为
将(基本上)转换为:

正如您所看到的,分号不应该在那里。编译器希望在分号之前有结束括号,因此会显示错误消息


“模型”是MVC中的M。模型是视图显示的数据。每个视图都有一个模型,因此该模型包含视图所需的所有数据。

除了放错的分号之外,请确保您的视图定义为继承自
视图页面。这指定
模型
在视图中的类型,允许编译器解析其成员(
消息
NumTimes
)。

除了放错的分号,请确保将视图定义为继承自
查看页面
。这指定了视图中
Model
的类型,允许编译器解析其成员(
Message
NumTimes
)。

只是为了澄清它实际上转换为
Response.Write(html\u encode(Model.Message;)
因为它是
而不是
@Basiclife:是的,这是正确的,但这就是“基本上”的含义,因为它与问题并不真正相关
因为它是
而不是
@Basiclife:是的,这是正确的,但这就是“基本上”的含义,因为它与问题并不真正相关。
<h3><%: Model.Message; %></h3>
Response.Write(Model.Message;);