2

我有一个用户填写的表单,然后被定向到包含输入数据的视图。如何创建此视图,以便它使用初始化为用户输入的变量。视图应该如何。我已经阅读了有关将参数传递给视图的信息,但我需要一种方法来创建它,然后将传递给视图中每个变量的参数分配给它们。

编辑:来自布赖恩·罗杰的例子

说有模特

public class MyModel
{
    public string Name { get; set; }
}

还有一个视图(使用另一个名为 mod 的模型),例如

@using (Html.BeginForm("Example", "Test", FormMethod.Get))
  {
     <input type="text" name="Name" value="@Model.Name" />
      <input type="submit" value="Go" />
 }

填写表格后,我想获取数据并将其显示在另一个视图 view2 中

@model MyModel
@{
   Layout = "~/Views/Shared/_Layout.cshtml";
 }

<h2>Example of passing data between the view and controller using a model</h2>
 @if (string.IsNullOrEmpty(Model.Name))
  {
    <p>Enter your name below and click Go.</p>
  }
 else
 {
    <p>You entered "@Model.Name".
 }

我的提交按钮控制器看起来像

public ActionResult Example(MyModel model)
{
    model.Name = mod.Name;
    return View("view2", model);
}

mod.Name 的值是正确的,但我只是没有传递给新视图

编辑2:

view2 的控制器看起来像这样

public ActionResult view2(MyModel model)
{
  return View(model)
}
4

1 回答 1

2

在 MVC3 中,为了将值来回传递给视图,您使用模型对象。模型对象只是一个包含一些属性的 C# 类。在您的控制器中,您使您的操作方法接受模型作为参数,根据需要进行任何处理,然后将更新的模型作为 ActionResult 的一部分返回给视图。在视图中,您可以通过视图上的 Model 属性引用模型对象。

这是一个人为的例子。

模型类:

public class MyModel
{
    public string Name { get; set; }
}

控制器类:

public class TestController : Controller
{
    public ActionResult Example(MyModel model)
    {
        if (model == null)
        {
            model = new MyModel();
        }
        return View(model);
    }
}

视图(这将是 Test/Example.cshtml):

@model MyModel
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Example of passing data between the view and controller using a model</h2>
@if (string.IsNullOrEmpty(Model.Name))
{
    <p>Enter your name below and click Go.</p>
}
else
{
    <p>You entered "@Model.Name".  If you want to change it, 
       enter a new name below and click Go.</p>
}
@using (Html.BeginForm("Example", "Test", FormMethod.Post))
{
    <input type="text" name="Name" value="@Model.Name" />
    <input type="submit" value="Go" />
}

@model 指令告诉视图模型类是MyModel. 因此,您可以通过视图的 Model 属性引用其属性。将表单控件命名为与模型类的属性相同,因此 MVC 框架在提交表单时将模型传递给控制器​​时会将值放回模型对象中。

有关更深入的示例,您可能需要查看一些 MVC 教程,例如这些. 希望这可以帮助。

编辑:更新显示从一个视图获取数据并在另一个视图中显示的示例

这是更新的控制器类:

public class TestController : Controller
{
    // This method corresponds to the first view which just displays an empty form
    public ActionResult Example()
    {
        MyModel model = new MyModel();
        return View(model);
    }

    // This method corresponds to the second view which displays the data
    public ActionResult Example2(MyModel model)
    {
        return View(model);
    }
}

这是显示表单的第一个视图 (Views/Test/Example.cshtml)。注意它是如何发布到Example2控制器中的方法的。

@model MyModel

<h2>Example view with a form</h2>
<p>Enter your name below:</p>
@using (Html.BeginForm("Example2", "Test", FormMethod.Post))
{
    <input type="text" name="Name" value="@Model.Name" />
    <input type="submit" value="Go" />
}

这是显示来自第一个视图的数据的第二个视图 (Views/Test/Example2.cshtml):

@model MyModel

<h2>Example view that displays data from another view</h2>
<p>You entered "@Model.Name".</p>
于 2012-12-24T05:06:03.447 回答