在视图控制器中添加razor变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在视图控制器中添加razor变量?相关的知识,希望对你有一定的参考价值。

我想知道是否可以在视图控制器中调用剃刀变量?

基本上我试图从这个视频复制过程有几个不同之处:https://www.youtube.com/watch?v=P7i1G6CeOiI

例如,我正在构建一个网站,从表单中获取文本输入并通过电子邮件将其发送到中央电子邮件地址。在html页面上构建表单后,我使用razor创建一个等于每个输入框的变量

例如:

<input class="input" type="text" name="inputOne" />

@{
 var input1 = Request["inputOne"];
}

从那里,我创建了一个字符串,将所有变量放在一起,以创建电子邮件的邮件正文。

例如:

string messageBody = "input one: " + input1 + "input two: " + input2 + ect.ect.ect.;

现在这里我有点失落。在上面的视频中完成的方式,教师硬编码电子邮件中发送的消息。显然,在我的情况下这不起作用,因为消息体依赖于用户输入。我认为调用“messageBody”字符串会很容易,那就是 - 显然不是。 “当前上下文中不存在名称'messageBody'”。我想知道如何或者如果我可以在控制器中调用“messageBody”字符串?或者一种完全不同的方法可能会更好地满足我的需求?

答案

创建两个动作,返回Controller中的视图。一个用于GET,一个用于POST。

再创建您将使用的模型,您的模型应该具有InputOne属性,所以看起来像这样:

public class RegisterViewModel
{
    public string InputOne { get; set; }
}

行动:

[HttpGet]
public ActionResult Example()
    {
        var model = new ExampleViewModel();
        return View(model);
    }

[HttpPost]
public ActionResult Example(ExampleViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // Process the model as you wish...

        return RedirectToAction(nameof(AnotherAction));
    }

创建相应的View(Views文件夹/ YourControllerName / Example.cshtml)在视图中包含你的viewmodel,并实现表单:

@model YourProjectName.Project.Models.ExampleViewModel

<div>
    @using (Html.BeginForm("Example", "YourController", FormMethod.Post))
    {
        @Html.TextBoxFor(model => model.InputOne)

        <input type="submit" value="Submit">
    }
</div>

希望这可以帮助!

以上是关于在视图控制器中添加razor变量?的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 asp.net core razor 页面中的 razor 视图

在 Blazor (.razor) 组件中添加多个组件

在 Razor 页面上不显眼的 ajax 发布后更新部分视图

js:Razor视图下服务器代码给Javascript变量赋值

ASP.Net MVC开发基础学习笔记:三Razor视图引擎控制器与路由机制学习

MVC里面的Razor中怎么建全局变量啊???急求