-1

如何在操作方法中访问已发布的表单数据并在视图中显示

我正在 MVC 中创建一个输入向导。有两个视图,一个用于从用户那里获取输入,另一个用于显示输入数据。

这是模型的代码:

 public class Info
  {
    public int CustomerId { set; get; }
    public double Price { set; get; }
    public string name { set; get; }
  }
}

控制器代码-

    public ActionResult FillCustomer()
    {
        return View();
    }

    public ActionResult DisplayCustomer(FormCollection frm)
    {
        Info info = new Info();

        info.name = Convert.ToString( Request.Form["name"]);
        info.Price = Convert.ToDouble(Request.Form["price"]);
        info.CustomerId = Convert.ToInt32(Request.Form["customerid"]);

        return View(info);
    }

FillCustomer View的代码-

<form method="post" action="DisplayCustomer">
Name: <input type="text" id="name" /><br />
Price: <input type="text" id="price" /><br />
CustomerId: <input type="text" id="customerid" />
<br />
<input type="submit" id="btn1" />
</form>
</body>
</html>

DisplayCustomer View的代码-

<body>
<div>
Name is <%=Model.name %> and ID is <%=Model.CustomerId %>

<%if (Model.Price > 200)
  {%>

Greater than 200

<%}
  else %>

<%{%>Lesser than 200 

    <%} %>
    </div>
</body>
</html>

我用调试器检查过,控制器没有收到发布的数据。

4

3 回答 3

3

表单的输入元素应该有一个name属性

<form method="post" action="DisplayCustomer">
Name: <input type="text" id="name" name="name" /><br />
Price: <input type="text" id="price" name="price" /><br />
CustomerId: <input type="text" id="customerid" name="customerid" />
<br />
<input type="submit" id="btn1" />
</form>

现在您将获得表单数据

        Info info = new Info();
        info.name = Convert.ToString( Request.Form["name"]);
        info.Price = Convert.ToDouble(Request.Form["price"]);
        info.CustomerId = Convert.ToInt32(Request.Form["customerid"]);

在控制器中,表单数据作为键/值对接收。并且键是从名称属性中生成的。

于 2013-02-04T11:51:31.667 回答
1

您正在使用 MVC,因此 DisplayCustomer 方法中的参数是您从视图传递的模型,该模型由模型绑定器隐式创建。将类型从 FormCollection 更改为 Info 类,如下所示:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DisplayCustomer(Info model)
{
   // you can now access to Info properties
}

这样信息对象的值就会被填充,我认为这就是你想要完成的。

于 2013-02-04T12:20:12.513 回答
0

我认为您错过了编写 DisplayCustomer 函数的属性顶部。就写吧,希望能成功。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DisplayCustomer(FormCollection frm)
{
    Info info = new Info();

    info.name = Convert.ToString( Request.Form["name"]);
    info.Price = Convert.ToDouble(Request.Form["price"]);
    info.CustomerId = Convert.ToInt32(Request.Form["customerid"]);

    return View(info);
}
于 2013-02-04T11:29:01.837 回答