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

问题描述 投票:0回答:1

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

基本上我试图从这个视频复制过程有几个不同之处: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”字符串?或者一种完全不同的方法可能会更好地满足我的需求?

c# html asp.net-mvc razor
1个回答
0
投票

创建两个动作,返回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>

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.